回答編集履歴

3

追記

2020/05/13 18:44

投稿

hoshi-takanori
hoshi-takanori

スコア7895

test CHANGED
@@ -114,6 +114,24 @@
114
114
 
115
115
 
116
116
 
117
+ ```js
118
+
119
+ const obj = { type: 'keyword', searchValue: ['JavaScript', 'React.js'] };
120
+
121
+ console.log(obj['type']); // keyword と表示される
122
+
123
+ console.log(obj['type'] === 'keyword'); // true と表示される
124
+
125
+ if (obj['type'] === 'keyword') {
126
+
127
+ console.log('obj はキーワードです'); // 表示される
128
+
129
+ }
130
+
131
+ ```
132
+
133
+
134
+
117
135
  また、`a['type']` は実は `a.type` とも書くことができます。(というか、その方が普通ですね。)
118
136
 
119
137
  'type' の部分にスペースや - などの記号が含まれていたり、'type' の部分を変数にしたい場合は、`a.param-type` や `a.変数` とは書けないので、`a['param-type']` や `a[変数]` と書くことになります。

2

追記

2020/05/13 18:44

投稿

hoshi-takanori
hoshi-takanori

スコア7895

test CHANGED
@@ -154,6 +154,10 @@
154
154
 
155
155
 
156
156
 
157
+ 参考: [JavaScript アロー関数のサンプル | ITSakura](https://itsakura.com/js-arrow)
158
+
159
+
160
+
157
161
  JavaScript の関数の書き方は 3 通りあって、基本的にどれも同じ結果になります。
158
162
 
159
163
  (厳密には、アロー関数は this の扱いが異なりますが、ここでは結果に影響しないので…。)

1

追記

2020/05/13 18:33

投稿

hoshi-takanori
hoshi-takanori

スコア7895

test CHANGED
@@ -95,3 +95,167 @@
95
95
  ]
96
96
 
97
97
  ```
98
+
99
+
100
+
101
+ ---
102
+
103
+
104
+
105
+ > > 配列 props.params から条件 ['keyword'].includes(a['type']) に合うものを抜き出しています。
106
+
107
+ >
108
+
109
+ > ・こちらについてなのですが、`a['type’]`が渡された配列における”[]”内で渡されたkeyの値を表す。という書き方は、filter関数のみの書き方ではなく、それ以外でも同じ書き方をするのでしょうか?
110
+
111
+
112
+
113
+ はい。`a['type']` という書き方は、オブジェクトのプロパティにアクセスするためのもので、式を書ける場所ならどこにでも書くことができます。
114
+
115
+
116
+
117
+ また、`a['type']` は実は `a.type` とも書くことができます。(というか、その方が普通ですね。)
118
+
119
+ 'type' の部分にスペースや - などの記号が含まれていたり、'type' の部分を変数にしたい場合は、`a.param-type` や `a.変数` とは書けないので、`a['param-type']` や `a[変数]` と書くことになります。
120
+
121
+ 逆に、`props.params` の代わりに `props['params']` と書くこともできます。
122
+
123
+
124
+
125
+ 参考: [【JavaScript】プロパティへのアクセス - Qiita](https://qiita.com/tomcky/items/0757348473873765432e)
126
+
127
+
128
+
129
+ > また、
130
+
131
+ > > props.params.filter((a) => { return (['keyword'].includes(a['type'])) })
132
+
133
+ >
134
+
135
+ > は
136
+
137
+ >
138
+
139
+ > > props.params.filter((a) => { return a['type'] === 'keyword'})
140
+
141
+ >
142
+
143
+ > という風にも書き換える事ができ、
144
+
145
+ > ・returnを含む括弧内がtrueとなる要素の配列を新たに作る、という理解であっていますでしょうか、、?
146
+
147
+
148
+
149
+ はい。`配列.filter(真偽値を返す関数)` と書くと、配列の各要素に対して真偽値を返す関数が呼び出され、true を返した要素だけを集めた新しい配列が作られます。
150
+
151
+
152
+
153
+ この `(a) => { return a['type'] === 'keyword'}` はアロー関数というもので、もっと短く `a => a.type === 'keyword'` と書くこともできます。
154
+
155
+
156
+
157
+ JavaScript の関数の書き方は 3 通りあって、基本的にどれも同じ結果になります。
158
+
159
+ (厳密には、アロー関数は this の扱いが異なりますが、ここでは結果に影響しないので…。)
160
+
161
+
162
+
163
+ 1) function キーワードを使った名前付き関数
164
+
165
+
166
+
167
+ ```js
168
+
169
+ // 名前付き関数の定義は文なので、関数定義と、その使用は分けて書く必要がある。
170
+
171
+ function isKeyword(a) {
172
+
173
+ return a.type === 'keyword';
174
+
175
+ }
176
+
177
+ props.params.filter(isKeyword)
178
+
179
+ ```
180
+
181
+
182
+
183
+ 2) function キーワードを使って無名関数
184
+
185
+
186
+
187
+ ```js
188
+
189
+ // 無名関数は式なので、関数定義と、その使用は分けて書くこともできるし、
190
+
191
+ const isKeyword = function (a) {
192
+
193
+ return a.type === 'keyword';
194
+
195
+ };
196
+
197
+ props.params.filter(isKeyword)
198
+
199
+
200
+
201
+ // または、次のようにまとめて書くこともできる。
202
+
203
+ props.params.filter(function (a) {
204
+
205
+ return a.type === 'keyword';
206
+
207
+ })
208
+
209
+ ```
210
+
211
+
212
+
213
+ 3) アロー関数
214
+
215
+
216
+
217
+ ```js
218
+
219
+ // アロー関数も式なので、関数定義と、その使用は分けて書くこともできるし、
220
+
221
+ const isKeyword = (a) => {
222
+
223
+ return a.type === 'keyword';
224
+
225
+ };
226
+
227
+ props.params.filter(isKeyword)
228
+
229
+
230
+
231
+ // または、次のようにまとめて書くこともできる。
232
+
233
+ props.params.filter((a) => {
234
+
235
+ return a.type === 'keyword';
236
+
237
+ })
238
+
239
+
240
+
241
+ // さらに、return を省略することも可能。
242
+
243
+ props.params.filter(a => a.type === 'keyword')
244
+
245
+ ```
246
+
247
+
248
+
249
+ また、どの方法で作った関数も、filter や map などに渡すだけでなく、普通に呼び出すことができます。
250
+
251
+
252
+
253
+ ```js
254
+
255
+ const isKeyword = a => a.type === 'keyword';
256
+
257
+ const obj = { type: 'keyword', searchValue: ['JavaScript', 'React.js'] };
258
+
259
+ console.log(isKeyword(obj)); // true と表示される
260
+
261
+ ```