回答編集履歴

7

テキスト修正

2020/10/02 16:17

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -17,3 +17,39 @@
17
17
  ```
18
18
 
19
19
  - **動作確認用codepen:** [/jun68ykt/pen/XWdLvJx](https://codepen.io/jun68ykt/pen/XWdLvJx?editors=0012)
20
+
21
+
22
+
23
+ ## 追記
24
+
25
+
26
+
27
+ Underscore.jsを使わない案を追記します。このような場合、与えられるオブジェクトを
28
+
29
+
30
+
31
+ 1. Object.entries で、キーと値の組の配列にして、
32
+
33
+ 2. map で各プロパティの値に手を加え、
34
+
35
+ 3. Object.fromEntries でオブジェクトに戻す。
36
+
37
+
38
+
39
+ という手順が、よく使う定跡かなと思います。以下は、この手順によるサンプルです。配列要素の合計を算出する関数`sum`をあらかじめ作っておき、map に与える関数が読みやすくなるようにしています。
40
+
41
+
42
+
43
+ ```javascript
44
+
45
+ const sum = values => values.reduce((s, v) => s + v, 0)
46
+
47
+
48
+
49
+ const totals = Object.entries(arr).map(([k, values]) => [k, sum(values)])
50
+
51
+ const result = Object.fromEntries(totals);
52
+
53
+ ```
54
+
55
+ - **動作確認用codepen:** [/jun68ykt/pen/LYNKwMG](https://codepen.io/jun68ykt/pen/LYNKwMG?editors=0012)

6

テキスト修正

2020/10/02 16:17

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  ```javascript
14
14
 
15
- const result = _.mapObject(arr, v => v.reduce((sum, e) => sum + e, 0))
15
+ const result = _.mapObject(arr, values => values.reduce((s, v) => s + v, 0))
16
16
 
17
17
  ```
18
18
 

5

テキスト修正

2020/10/02 15:49

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  ```javascript
14
14
 
15
- const result = _.mapObject(arr, v => v.reduce((sum, e) => sum + e))
15
+ const result = _.mapObject(arr, v => v.reduce((sum, e) => sum + e, 0))
16
16
 
17
17
  ```
18
18
 

4

テキスト修正

2020/10/02 15:43

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- > Underscore.js
5
+ > Underscore.jsで、あるオブジェクトの値に対してreduceを適用させたいです。
6
6
 
7
7
 
8
8
 
9
- の[_.mapObject](https://underscorejs.org/#mapObject) を使って、以下のようにするとよいかと思います。
9
+ ということであれば、Underscore.jsの[_.mapObject](https://underscorejs.org/#mapObject) を使って、以下のようにするとよいかと思います。
10
10
 
11
11
 
12
12
 

3

テキスト修正

2020/10/02 15:41

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- を使えるであれば、[_.mapObject](https://underscorejs.org/#mapObject) 、以下のようにするとよいかと思います。
9
+ の[_.mapObject](https://underscorejs.org/#mapObject) を使って、以下のようにするとよいかと思います。
10
10
 
11
11
 
12
12
 

2

テキスト修正

2020/10/02 15:39

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,13 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- ご質問のタイトルにある reduce は使いませんが、
6
-
7
-
8
-
9
5
  > Underscore.js
10
-
11
-
12
6
 
13
7
 
14
8
 

1

テキスト修正

2020/10/02 15:38

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,7 +2,17 @@
2
2
 
3
3
 
4
4
 
5
+ ご質問のタイトルにある reduce は使いませんが、
6
+
7
+
8
+
9
+ > Underscore.js
10
+
11
+
12
+
13
+
14
+
5
- [mapObject](https://underscorejs.org/#mapObject) を使えばよいかと思います。
15
+ を使えるのであれば、[_.mapObject](https://underscorejs.org/#mapObject) で、以下のうにするとよいかと思います。
6
16
 
7
17
 
8
18