回答編集履歴

3

テキスト修正

2020/10/02 14:43

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -80,7 +80,7 @@
80
80
 
81
81
  ```typescript
82
82
 
83
- const [productNames, SKUs] = _.unzip(data.map((e: Item) => [e.name, e.sku]))
83
+ const [productNames, SKUs] = _.unzip(data.map(({name, sku}: Item) => [name, sku]))
84
84
 
85
85
  ```
86
86
 

2

テキスト修正

2020/10/02 14:43

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
 
36
36
 
37
- ### 追記
37
+ ### 追記1
38
38
 
39
39
 
40
40
 
@@ -70,6 +70,22 @@
70
70
 
71
71
 
72
72
 
73
+ ### 追記2
74
+
75
+
76
+
77
+ reduceを使うというご質問の本題からは外れますが、lodashの[unzip](https://lodash.com/docs/#unzip)を使うと、以下のように手短かに書けます。
78
+
79
+
80
+
81
+ ```typescript
82
+
83
+ const [productNames, SKUs] = _.unzip(data.map((e: Item) => [e.name, e.sku]))
84
+
85
+ ```
86
+
87
+ - **動作確認用Codepen:** [/jun68ykt/pen/NWNZVeQ](https://codepen.io/jun68ykt/pen/NWNZVeQ?editors=0012)
88
+
73
89
 
74
90
 
75
91
  参考になれば幸いです。

1

テキスト修正

2020/10/02 14:36

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -34,4 +34,42 @@
34
34
 
35
35
 
36
36
 
37
+ ### 追記
38
+
39
+
40
+
41
+ `reduce`の第二引数に渡す初期値に`SKUs`のための空配列を追加し、分割代入とスプレッド構文を使うと、以下のようにも書けます。
42
+
43
+
44
+
45
+ ```typescript
46
+
47
+ type Item = {
48
+
49
+ name: string
50
+
51
+ sku: string
52
+
53
+ }
54
+
55
+ ```
56
+
57
+ ```typescript
58
+
59
+ const [productNames, SKUs] = data.reduce(
60
+
61
+ ([names, skus]: string[][], {name, sku}: Item) =>
62
+
63
+ [[...names, name], [...skus, sku]]
64
+
65
+ , [[], []])
66
+
67
+ ```
68
+
69
+ - **動作確認用Codepen:** [/jun68ykt/pen/WNwqBOm](https://codepen.io/jun68ykt/pen/WNwqBOm?editors=0012)
70
+
71
+
72
+
73
+
74
+
37
75
  参考になれば幸いです。