回答編集履歴
5
回答追加
test
CHANGED
@@ -11,3 +11,25 @@
|
|
11
11
|
console.log(result);
|
12
12
|
|
13
13
|
```
|
14
|
+
|
15
|
+
.
|
16
|
+
|
17
|
+
もうひとつ思いついたので追記します。
|
18
|
+
|
19
|
+
```JavaScript
|
20
|
+
|
21
|
+
const memo = [];
|
22
|
+
|
23
|
+
const result = [...member1, ...member2]
|
24
|
+
|
25
|
+
.reduce((acc, {id, name}) => memo[id]
|
26
|
+
|
27
|
+
? acc // メモ済みのIDだったらaccに追加しないで飛ばす
|
28
|
+
|
29
|
+
: (memo[id] = true, [...acc, {id, name}]) // 初出のIDならメモして、追加
|
30
|
+
|
31
|
+
, []);
|
32
|
+
|
33
|
+
console.log(result);
|
34
|
+
|
35
|
+
```
|
4
ミスの修正
test
CHANGED
@@ -1 +1,13 @@
|
|
1
|
+
こちらはどうでしょう?
|
2
|
+
|
3
|
+
```JavaScript
|
4
|
+
|
5
|
+
const result = [...member1, ...member2]
|
6
|
+
|
7
|
+
.reduce((acc, {id, name}) => (acc[id] = acc[id] || name, acc), [])
|
8
|
+
|
9
|
+
.reduce((acc, name, id) => [...acc, {id, name}], []);
|
10
|
+
|
1
|
-
|
11
|
+
console.log(result);
|
12
|
+
|
13
|
+
```
|
3
問題勘違いしてました
test
CHANGED
@@ -1,17 +1 @@
|
|
1
|
-
|
1
|
+
問題勘違いしてました。ちょっと落ち着いて考え直します
|
2
|
-
|
3
|
-
ES2015で以下のように書けます。
|
4
|
-
|
5
|
-
```javascript
|
6
|
-
|
7
|
-
const result = [...member1, ...member2].reduce((acc, {id, name}) => ([{id, name}, ...acc]), []);
|
8
|
-
|
9
|
-
console.log(result);
|
10
|
-
|
11
|
-
```
|
12
|
-
|
13
|
-
なお、同じIDで違う値が来たとき新しい方の値で上書きしたいときは([...acc, {id, name}])にしてくださいね。
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
※ミスして訂正しました。失礼しました
|
2
ミスの修正
test
CHANGED
@@ -1 +1,17 @@
|
|
1
|
+
スマートな方法を探していると聞いてデブな私が来ました。
|
2
|
+
|
3
|
+
ES2015で以下のように書けます。
|
4
|
+
|
5
|
+
```javascript
|
6
|
+
|
7
|
+
const result = [...member1, ...member2].reduce((acc, {id, name}) => ([{id, name}, ...acc]), []);
|
8
|
+
|
9
|
+
console.log(result);
|
10
|
+
|
11
|
+
```
|
12
|
+
|
13
|
+
なお、同じIDで違う値が来たとき新しい方の値で上書きしたいときは([...acc, {id, name}])にしてくださいね。
|
14
|
+
|
15
|
+
|
16
|
+
|
1
|
-
|
17
|
+
※ミスして訂正しました。失礼しました
|
1
問題を勘違い
test
CHANGED
@@ -1,13 +1 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
ES2015の[Computed property names](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer#%E8%A8%88%E7%AE%97%E3%81%95%E3%82%8C%E3%81%9F%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3%E5%90%8D)という機能を使って以下のように書けます。
|
4
|
-
|
5
|
-
```javascript
|
6
|
-
|
7
|
-
const result = [...member1, ...member2].reduce((acc, {id, name}) => ({[id]: name, ...acc}), {});
|
8
|
-
|
9
|
-
console.log(result);
|
10
|
-
|
11
|
-
```
|
12
|
-
|
13
|
-
なお、同じIDで違う値が来たとき新しい方の値で上書きしたいときは({...acc, [id]: name})にしてくださいね。
|
1
|
+
すみません間違えてました。一旦削除します
|