回答編集履歴

1

処理にコメントを追加

2021/07/09 15:02

投稿

taku-hu
taku-hu

スコア176

test CHANGED
@@ -1,23 +1,41 @@
1
1
  配列の値を順に処理したい時は`reduce`を使うとよいと思います。
2
2
 
3
- [動作デモ](https://jsfiddle.net/zq41gaxr/)
3
+ [動作デモ](https://jsfiddle.net/ms5f2pdn/)
4
4
 
5
5
 
6
6
 
7
7
  ```javascript
8
8
 
9
+ const array = [
10
+
11
+ { foo: 1 },
12
+
13
+ { bar: 2 },
14
+
15
+ { foo: -2 },
16
+
9
- const array = [{ foo: 1 }, { bar: 2 }, { foo: -2 }, { foo: 3, bar: 4 }];
17
+ { foo: 3, bar: 4 }
18
+
19
+ ]
10
20
 
11
21
 
12
22
 
13
- const foo = array.reduce((acc, { foo = 0 }) => acc + foo, 0);
23
+ // reduce内のコールバック関数の第1引数は現在の値、つまり一巡目はreduceの第二引数である初期値の0
14
24
 
25
+ // それにコールバック関数の第2引数である現在処理している値からfooを取り出して足していく
26
+
27
+ // ただしarray内のオブジェクトにはfooがundefinedの場合があるので{ foo = 0 }として無かった場合のデフォルト値を設定している
28
+
29
+ const foo = array.reduce((acc, { foo = 0 }) => acc + foo, 0)
30
+
15
- const bar = array.reduce((acc, { bar = 0 }) => acc + bar, 0);
31
+ const bar = array.reduce((acc, { bar = 0 }) => acc + bar, 0)
16
32
 
17
33
 
18
34
 
19
- console.log(foo);
35
+ console.log(foo)
20
36
 
21
- console.log(bar);
37
+ console.log(bar)
38
+
39
+
22
40
 
23
41
  ```