回答編集履歴
5
回答追加
answer
CHANGED
@@ -4,4 +4,15 @@
|
|
4
4
|
.reduce((acc, {id, name}) => (acc[id] = acc[id] || name, acc), [])
|
5
5
|
.reduce((acc, name, id) => [...acc, {id, name}], []);
|
6
6
|
console.log(result);
|
7
|
+
```
|
8
|
+
.
|
9
|
+
もうひとつ思いついたので追記します。
|
10
|
+
```JavaScript
|
11
|
+
const memo = [];
|
12
|
+
const result = [...member1, ...member2]
|
13
|
+
.reduce((acc, {id, name}) => memo[id]
|
14
|
+
? acc // メモ済みのIDだったらaccに追加しないで飛ばす
|
15
|
+
: (memo[id] = true, [...acc, {id, name}]) // 初出のIDならメモして、追加
|
16
|
+
, []);
|
17
|
+
console.log(result);
|
7
18
|
```
|
4
ミスの修正
answer
CHANGED
@@ -1,1 +1,7 @@
|
|
1
|
+
こちらはどうでしょう?
|
2
|
+
```JavaScript
|
3
|
+
const result = [...member1, ...member2]
|
4
|
+
.reduce((acc, {id, name}) => (acc[id] = acc[id] || name, acc), [])
|
5
|
+
.reduce((acc, name, id) => [...acc, {id, name}], []);
|
1
|
-
|
6
|
+
console.log(result);
|
7
|
+
```
|
3
問題勘違いしてました
answer
CHANGED
@@ -1,9 +1,1 @@
|
|
1
|
-
|
1
|
+
問題勘違いしてました。ちょっと落ち着いて考え直します
|
2
|
-
ES2015で以下のように書けます。
|
3
|
-
```javascript
|
4
|
-
const result = [...member1, ...member2].reduce((acc, {id, name}) => ([{id, name}, ...acc]), []);
|
5
|
-
console.log(result);
|
6
|
-
```
|
7
|
-
なお、同じIDで違う値が来たとき新しい方の値で上書きしたいときは([...acc, {id, name}])にしてくださいね。
|
8
|
-
|
9
|
-
※ミスして訂正しました。失礼しました
|
2
ミスの修正
answer
CHANGED
@@ -1,1 +1,9 @@
|
|
1
|
+
スマートな方法を探していると聞いてデブな私が来ました。
|
2
|
+
ES2015で以下のように書けます。
|
3
|
+
```javascript
|
4
|
+
const result = [...member1, ...member2].reduce((acc, {id, name}) => ([{id, name}, ...acc]), []);
|
5
|
+
console.log(result);
|
6
|
+
```
|
7
|
+
なお、同じIDで違う値が来たとき新しい方の値で上書きしたいときは([...acc, {id, name}])にしてくださいね。
|
8
|
+
|
1
|
-
|
9
|
+
※ミスして訂正しました。失礼しました
|
1
問題を勘違い
answer
CHANGED
@@ -1,7 +1,1 @@
|
|
1
|
-
|
2
|
-
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)という機能を使って以下のように書けます。
|
3
|
-
```javascript
|
4
|
-
const result = [...member1, ...member2].reduce((acc, {id, name}) => ({[id]: name, ...acc}), {});
|
5
|
-
console.log(result);
|
6
|
-
```
|
7
|
-
なお、同じIDで違う値が来たとき新しい方の値で上書きしたいときは({...acc, [id]: name})にしてくださいね。
|
1
|
+
すみません間違えてました。一旦削除します
|