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

回答編集履歴

3

テキスト修正

2020/10/02 14:43

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -39,7 +39,7 @@
39
39
  reduceを使うというご質問の本題からは外れますが、lodashの[unzip](https://lodash.com/docs/#unzip)を使うと、以下のように手短かに書けます。
40
40
 
41
41
  ```typescript
42
- const [productNames, SKUs] = _.unzip(data.map((e: Item) => [e.name, e.sku]))
42
+ const [productNames, SKUs] = _.unzip(data.map(({name, sku}: Item) => [name, sku]))
43
43
  ```
44
44
  - **動作確認用Codepen:** [/jun68ykt/pen/NWNZVeQ](https://codepen.io/jun68ykt/pen/NWNZVeQ?editors=0012)
45
45
 

2

テキスト修正

2020/10/02 14:43

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  - **動作確認用Codepen:** [/jun68ykt/pen/YzqoMoZ](https://codepen.io/jun68ykt/pen/YzqoMoZ?editors=0012)
18
18
 
19
- ### 追記
19
+ ### 追記1
20
20
 
21
21
  `reduce`の第二引数に渡す初期値に`SKUs`のための空配列を追加し、分割代入とスプレッド構文を使うと、以下のようにも書けます。
22
22
 
@@ -34,5 +34,13 @@
34
34
  ```
35
35
  - **動作確認用Codepen:** [/jun68ykt/pen/WNwqBOm](https://codepen.io/jun68ykt/pen/WNwqBOm?editors=0012)
36
36
 
37
+ ### 追記2
37
38
 
39
+ reduceを使うというご質問の本題からは外れますが、lodashの[unzip](https://lodash.com/docs/#unzip)を使うと、以下のように手短かに書けます。
40
+
41
+ ```typescript
42
+ const [productNames, SKUs] = _.unzip(data.map((e: Item) => [e.name, e.sku]))
43
+ ```
44
+ - **動作確認用Codepen:** [/jun68ykt/pen/NWNZVeQ](https://codepen.io/jun68ykt/pen/NWNZVeQ?editors=0012)
45
+
38
46
  参考になれば幸いです。

1

テキスト修正

2020/10/02 14:36

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -16,4 +16,23 @@
16
16
 
17
17
  - **動作確認用Codepen:** [/jun68ykt/pen/YzqoMoZ](https://codepen.io/jun68ykt/pen/YzqoMoZ?editors=0012)
18
18
 
19
+ ### 追記
20
+
21
+ `reduce`の第二引数に渡す初期値に`SKUs`のための空配列を追加し、分割代入とスプレッド構文を使うと、以下のようにも書けます。
22
+
23
+ ```typescript
24
+ type Item = {
25
+ name: string
26
+ sku: string
27
+ }
28
+ ```
29
+ ```typescript
30
+ const [productNames, SKUs] = data.reduce(
31
+ ([names, skus]: string[][], {name, sku}: Item) =>
32
+ [[...names, name], [...skus, sku]]
33
+ , [[], []])
34
+ ```
35
+ - **動作確認用Codepen:** [/jun68ykt/pen/WNwqBOm](https://codepen.io/jun68ykt/pen/WNwqBOm?editors=0012)
36
+
37
+
19
38
  参考になれば幸いです。