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

回答編集履歴

2

テキスト修正

2019/11/16 08:45

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -26,8 +26,7 @@
26
26
  を得る関数を作ります。このような処理をする関数は、慣例的に zip と呼ばれるので、それに倣います。
27
27
 
28
28
  ```javascript
29
- const zip = (ary1, ary2) =>
30
- ary1.map((e, i) => ([e, ary2[i]]));
29
+ const zip = (ary1, ary2) => ary1.map((e, i) => [e, ary2[i]]);
31
30
  ```
32
31
 
33
32
  上記の zip によって得られる

1

テキスト修正

2019/11/16 08:44

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -9,6 +9,43 @@
9
9
 
10
10
  とすると `objlist` が得られます。
11
11
 
12
- - 動作確認用 CodePen: [https://codepen.io/jun68ykt/pen/VwwVBPx?editors=0012](https://codepen.io/jun68ykt/pen/VwwVBPx?editors=0012)
12
+ - **動作確認用 CodePen:** [https://codepen.io/jun68ykt/pen/VwwVBPx?editors=0012](https://codepen.io/jun68ykt/pen/VwwVBPx?editors=0012)
13
13
 
14
+ ### 別解
15
+
16
+ lodash を使わない案も挙げておきます。
17
+
18
+ まず、以下の2つの配列
19
+ - `[ "name", "address", "tel" ]`
20
+ - `[ "田中", "東京", "000000000" ]`
21
+
22
+ から、下記の配列
23
+
24
+ - `[ [ "name", "田中" ], [ "address", "東京" ], [ "tel", "000000000" ] ]`
25
+
26
+ を得る関数を作ります。このような処理をする関数は、慣例的に zip と呼ばれるので、それに倣います。
27
+
28
+ ```javascript
29
+ const zip = (ary1, ary2) =>
30
+ ary1.map((e, i) => ([e, ary2[i]]));
31
+ ```
32
+
33
+ 上記の zip によって得られる
34
+ `[ [ "name", "田中" ], [ "address", "東京" ], [ "tel", "000000000" ] ]`
35
+ という形式の配列を
36
+ - [Object.fromEntries()](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries)
37
+
38
+
39
+ に渡せば、オブジェクトが作られます。以下はこれを使ったコードです。
40
+
41
+ ```javascript
42
+ const objlist = valuelist.map(v =>
43
+ Object.fromEntries(zip(key, v))
44
+ );
45
+ ```
46
+
47
+ - **動作確認用 CodePen:** [https://codepen.io/jun68ykt/pen/MWWzBVb?editors=0012](https://codepen.io/jun68ykt/pen/MWWzBVb?editors=0012)
48
+
49
+
50
+
14
51
  参考になれば幸いです。