回答編集履歴
2
letでなくてconstに直した...ねむい
answer
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
new Map()と分割代入の練習で作ってみました。
|
2
2
|
```js
|
3
|
-
let data = [["a", "b", 10], ["a", "b", 20], ["a", "c", 30], ["a", "c", 40], ["a", "d", 50], ["a", "b", "c",50], ["a", "b", "c",50]];
|
3
|
+
let data = [["a", "b", 10], ["a", "b", 20], ["a", "c", 30], ["a", "c", 40], ["a", "d", 50], ["a", "b", "c", 50], ["a", "b", "c", 50]];
|
4
4
|
//[["a","b",30],["a","c",70],["a","d",50];
|
5
5
|
|
6
|
-
|
6
|
+
const aggregate = new Map();
|
7
7
|
data.forEach(keys_value => {
|
8
|
-
|
8
|
+
const value_keys = Array.from(keys_value);
|
9
9
|
value_keys.unshift(value_keys.pop());
|
10
10
|
const [value, ...keys] = [...value_keys];
|
11
|
-
aggregate.set(JSON.stringify(keys), (aggregate.get(JSON.stringify(keys)) || 0)+value);
|
11
|
+
aggregate.set(JSON.stringify(keys), (aggregate.get(JSON.stringify(keys)) || 0) + value);
|
12
12
|
});
|
13
13
|
|
14
|
-
const result = [...aggregate.entries()].map(v => [...JSON.parse
|
14
|
+
const result = [...aggregate.entries()].map(v => [...JSON.parse(v[0]), v[1]]); //[ [ "a", "b", 30 ], [ "a", "c", 70 ], [ "a", "d", 50 ], [ "a", "b", "c", 100 ] ]
|
15
15
|
console.log(result);
|
16
|
-
|
17
|
-
|
18
16
|
```
|
19
17
|
|
20
18
|
```json
|
1
keysの方がしっくり来る
answer
CHANGED
@@ -4,16 +4,17 @@
|
|
4
4
|
//[["a","b",30],["a","c",70],["a","d",50];
|
5
5
|
|
6
6
|
let aggregate = new Map();
|
7
|
-
data.forEach(
|
7
|
+
data.forEach(keys_value => {
|
8
|
-
let
|
8
|
+
let value_keys = Array.from(keys_value);
|
9
|
-
|
9
|
+
value_keys.unshift(value_keys.pop());
|
10
|
-
const [value, ...
|
10
|
+
const [value, ...keys] = [...value_keys];
|
11
|
-
aggregate.set(JSON.stringify(
|
11
|
+
aggregate.set(JSON.stringify(keys), (aggregate.get(JSON.stringify(keys)) || 0)+value);
|
12
12
|
});
|
13
13
|
|
14
14
|
const result = [...aggregate.entries()].map(v => [...JSON.parse (v[0]),v[1]]); //[ [ "a", "b", 30 ], [ "a", "c", 70 ], [ "a", "d", 50 ], [ "a", "b", "c", 100 ] ]
|
15
15
|
console.log(result);
|
16
16
|
|
17
|
+
|
17
18
|
```
|
18
19
|
|
19
20
|
```json
|