回答編集履歴

5

回答追加

2019/01/31 18:41

投稿

shinji709
shinji709

スコア805

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

ミスの修正

2019/01/31 18:41

投稿

shinji709
shinji709

スコア805

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

問題勘違いしてました

2019/01/29 13:23

投稿

shinji709
shinji709

スコア805

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

ミスの修正

2019/01/29 12:34

投稿

shinji709
shinji709

スコア805

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

問題を勘違い

2019/01/29 12:30

投稿

shinji709
shinji709

スコア805

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
+ すみません間違えてました。一旦削除します