回答編集履歴

1

追記

2020/08/05 07:14

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

test CHANGED
@@ -32,8 +32,6 @@
32
32
 
33
33
  }
34
34
 
35
-
36
-
37
35
  }
38
36
 
39
37
  static fromPairs( a ){
@@ -61,3 +59,47 @@
61
59
 
62
60
 
63
61
  ```
62
+
63
+
64
+
65
+ 追記)
66
+
67
+
68
+
69
+ [Array#reduce](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)を使う例:
70
+
71
+
72
+
73
+ ```javascript
74
+
75
+ var src = [["a",100],["b",200],["a",300]];
76
+
77
+ var dst = Object.entries(src.reduce((o,[k,v])=>(o.hasOwnProperty(k)?o[k]+=v:o[k]=v,o),{}));
78
+
79
+ /*
80
+
81
+ var dst = Object.entries(src.reduce((o,[k,v])=> {
82
+
83
+ o.hasOwnProperty(k)
84
+
85
+ ? o[k]+=v
86
+
87
+ : o[k]=v;
88
+
89
+ return o},{}));
90
+
91
+ */
92
+
93
+ console.log( dst );
94
+
95
+ ```
96
+
97
+
98
+
99
+ 処理内容は他の回答と同様です。
100
+
101
+ 1. オブジェクトを連想配列のように扱う(initialValueに ``{}`` を与えて重複のない key-value を作る)。
102
+
103
+ [Object#hasOwnProperty()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty) を使うのは、初めて処理するペアの値に``0``があると falsyとなるため。
104
+
105
+ 2. Object.entries() で配列化する。