質問するログイン新規登録

回答編集履歴

2

コード修正

2021/10/21 11:19

投稿

fj68
fj68

スコア752

answer CHANGED
@@ -14,11 +14,9 @@
14
14
 
15
15
  ```js
16
16
  const users = [];
17
- const counts = [];
18
17
 
19
18
  json.values.forEach(value => {
20
19
  users.push(value.userId);
21
- counts.push(value.count);
22
20
  })
23
21
  ```
24
22
 
@@ -50,7 +48,7 @@
50
48
  これは関数の引数でも使えるので、「`{ userId: 120, count: 0 }`から`userId`の値をとってくる」関数はこうなります。
51
49
 
52
50
  ```js
53
- const getUserIdOf({ userId }) => userId;
51
+ const getUserIdOf = ({ userId }) => userId;
54
52
  const value = { userId: 120, count: 0 };
55
53
  console.log(userIdOf(value)); // 120
56
54
  ```

1

理由を追記

2021/10/21 11:19

投稿

fj68
fj68

スコア752

answer CHANGED
@@ -6,4 +6,57 @@
6
6
  ```
7
7
 
8
8
  細かいことですが、`users`よりも`userIds`の方が適切かな、と思います。
9
- ご参考まで。
9
+ ご参考まで。
10
+
11
+ ## 追記
12
+
13
+ なぜ上記のコードになるのか、一応書いておきます。
14
+
15
+ ```js
16
+ const users = [];
17
+ const counts = [];
18
+
19
+ json.values.forEach(value => {
20
+ users.push(value.userId);
21
+ counts.push(value.count);
22
+ })
23
+ ```
24
+
25
+ まず、`forEach`を`map`に書き換えます。
26
+ `map`はある配列の要素を順番に取り出し、関数を適用した結果の配列を作ります。
27
+ やっていることは上のコードと同じでして、`json.values`から要素を1つ(`{ userId: 120, count: 0 }`)順に取り出して「なにかして」その結果を配列にします。
28
+
29
+ ```js
30
+ const users = json.values.map(なにかする関数);
31
+ ```
32
+
33
+ この「なにかする関数」のところが「`{ userId: 120, count: 0 }`から`userId`の値をとってくる」という関数であればいいわけです。
34
+
35
+ つまり、こうなります。
36
+
37
+ ```js
38
+ const users = json.values.map(value => value.userId);
39
+ ```
40
+
41
+ ここで、JavaScriptには分割代入という機能があります。
42
+
43
+ ```js
44
+ const value = { userId: 120, count: 0 };
45
+ const { userId, count } = value;
46
+ console.log(userId); // 120
47
+ console.log(count); // 0
48
+ ```
49
+
50
+ これは関数の引数でも使えるので、「`{ userId: 120, count: 0 }`から`userId`の値をとってくる」関数はこうなります。
51
+
52
+ ```js
53
+ const getUserIdOf({ userId }) => userId;
54
+ const value = { userId: 120, count: 0 };
55
+ console.log(userIdOf(value)); // 120
56
+ ```
57
+
58
+ あとはこれらを組み合わせれば、冒頭の回答コードになります。
59
+
60
+ `filter`も`forEach`も同じようなものです。「なにかをする」関数の部分がちょっと変わるだけです。
61
+ でもとても便利なので、使えるようになると読みやすいコードが書けるようになると思います。
62
+ 幾分慣れの部分がありますので、頑張ってください!