teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

テキスト追加

2020/04/30 11:52

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
  ### 追記2
52
52
 
53
- 別案です。こちらはlodashの [_.pick](https://lodash.com/docs/#pick) を使います。
53
+ 別案です。lodashの [_.pick](https://lodash.com/docs/#pick) を使います。上記のコードよりも、こちらのほうが、何をやっているか分かりやすいかもしれません。
54
54
 
55
55
  ```javascript
56
56
  var C = { ...A, ...B };

2

テキスト追加

2020/04/30 11:52

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -45,4 +45,18 @@
45
45
  ).map(entries => Object.fromEntries(entries));
46
46
  ```
47
47
 
48
- - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/WNQELqm?editors=0012](https://codepen.io/jun68ykt/pen/WNQELqm?editors=0012)
48
+ - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/WNQELqm?editors=0012](https://codepen.io/jun68ykt/pen/WNQELqm?editors=0012)
49
+
50
+
51
+ ### 追記2
52
+
53
+ 別案です。こちらはlodashの [_.pick](https://lodash.com/docs/#pick) を使います。
54
+
55
+ ```javascript
56
+ var C = { ...A, ...B };
57
+
58
+ const len = Object.keys(A).length;
59
+
60
+ const result = [...Array(len)].map((x, i) => _.pick(C, [`a${i+1}`, `b${i+1}`]));
61
+ ```
62
+ - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/LYpjqRz?editors=0012](https://codepen.io/jun68ykt/pen/LYpjqRz?editors=0012)

1

テキスト追加

2020/04/30 10:52

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -23,4 +23,26 @@
23
23
 
24
24
  - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/wvKqRzp?editors=0012](https://codepen.io/jun68ykt/pen/wvKqRzp?editors=0012)
25
25
 
26
- 以上参考になれば幸いです。
26
+ 以上参考になれば幸いです。
27
+
28
+ ### 追記
29
+
30
+ 上記のコードに少し追加します。上記のコードでは、
31
+ ```javascript
32
+ var A = { a1: 11, a2: 22, a3: 33 };
33
+ ```
34
+ に対して、`Object.entries(A)` とすると、 `a1`, `a2`, `a3` の順の
35
+
36
+ ```javascript
37
+ [ ["a1", 11], ["a2", 22], ["a3", 33] ]
38
+ ```
39
+ という配列が得られることを前提にしていますが、これは結果オーライな雑なコードだったので、ソートを加えます。
40
+ ```javascript
41
+ const result = _.zip(
42
+ ...[A, B].map(obj =>
43
+ Object.entries(obj).sort(([k1],[k2]) => k1.localeCompare(k2))
44
+ )
45
+ ).map(entries => Object.fromEntries(entries));
46
+ ```
47
+
48
+ - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/WNQELqm?editors=0012](https://codepen.io/jun68ykt/pen/WNQELqm?editors=0012)