回答編集履歴
1
追記
answer
CHANGED
@@ -15,7 +15,6 @@
|
|
15
15
|
else {
|
16
16
|
this.set( key,val );
|
17
17
|
}
|
18
|
-
|
19
18
|
}
|
20
19
|
static fromPairs( a ){
|
21
20
|
let m = new MyMap();
|
@@ -29,4 +28,26 @@
|
|
29
28
|
var dstAry = MyMap.fromPairs(aryOriginal).entries();
|
30
29
|
console.log( [...dstAry] ); // [["a",400],["b",200]]
|
31
30
|
|
32
|
-
```
|
31
|
+
```
|
32
|
+
|
33
|
+
追記)
|
34
|
+
|
35
|
+
[Array#reduce](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)を使う例:
|
36
|
+
|
37
|
+
```javascript
|
38
|
+
var src = [["a",100],["b",200],["a",300]];
|
39
|
+
var dst = Object.entries(src.reduce((o,[k,v])=>(o.hasOwnProperty(k)?o[k]+=v:o[k]=v,o),{}));
|
40
|
+
/*
|
41
|
+
var dst = Object.entries(src.reduce((o,[k,v])=> {
|
42
|
+
o.hasOwnProperty(k)
|
43
|
+
? o[k]+=v
|
44
|
+
: o[k]=v;
|
45
|
+
return o},{}));
|
46
|
+
*/
|
47
|
+
console.log( dst );
|
48
|
+
```
|
49
|
+
|
50
|
+
処理内容は他の回答と同様です。
|
51
|
+
1. オブジェクトを連想配列のように扱う(initialValueに ``{}`` を与えて重複のない key-value を作る)。
|
52
|
+
[Object#hasOwnProperty()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty) を使うのは、初めて処理するペアの値に``0``があると falsyとなるため。
|
53
|
+
2. Object.entries() で配列化する。
|