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

回答編集履歴

22

テキスト修正

2019/07/14 02:33

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -108,7 +108,7 @@
108
108
  ```
109
109
  - **上記の動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/c0u1vp87/11/](https://jsfiddle.net/jun68ykt/c0u1vp87/11/)
110
110
 
111
- この回答の冒頭に、入力データの様々な可能性について書きましたが、上記の関数 `makeCSVData`はそれらに対応しており、 以下のような入力でも適切に処理してCSV用のデータを生成します。
111
+ この回答の冒頭に、入力データの様々な拡張性について書きましたが、上記の関数 `makeCSVData`はそれらに対応しており、 以下のような入力でも適切に処理してCSV用のデータを生成します。
112
112
 
113
113
  ```javascript
114
114
  const d1 = [

21

テキスト修正

2019/07/14 02:33

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -108,7 +108,7 @@
108
108
  ```
109
109
  - **上記の動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/c0u1vp87/11/](https://jsfiddle.net/jun68ykt/c0u1vp87/11/)
110
110
 
111
- この回答の冒頭に、入力データの様々な可能性について書きましたが、これらに対応して、上記の関数 `makeCSVData` は以下のような入力対応します。
111
+ この回答の冒頭に、入力データの様々な可能性について書きましたが、上記の関数 `makeCSVData`はそれらに対応しており、 以下のような入力適切に処理てCSV用のデータを生成します。
112
112
 
113
113
  ```javascript
114
114
  const d1 = [
@@ -137,4 +137,4 @@
137
137
  - **上記の動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/c0u1vp87/10/](https://jsfiddle.net/jun68ykt/c0u1vp87/10/)
138
138
 
139
139
 
140
- ご質問で提示された与件の範囲をかなり超えた大袈裟なものになっているかもせんが、汎用化を進めると、こういうコードになるという一例として参考にして頂ければと思います。
140
+ 関数 `makeCSVData`は、ご質問で提示された与件の範囲をかなり超えた大袈裟なものになってしまいましたが、先の様々な入力の拡張に対応させようとすると、こういうコードになるという一例として参考にして頂ければと思います。

20

テキスト修正

2019/07/14 02:22

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  上記のような可能性が考えられますが、これらのうち、今後、何が変わるかもしれないのか(または、変わらないのか)がはっきりしていると、リファクタの方向性が決まります。
14
14
 
15
- 以下の回答は、上記のどれであっても、修正すべき箇所がなるべく分かりやすいように、という考え方で作成したコードです。
15
+ 以下は、上記の可能性のどれであっても、修正すべき箇所がなるべく分かりやすいように、という考え方で作成したコードです。このコードで作られる `data` は、ご質問にある `data` と同じ内容の配列になります。
16
16
 
17
17
  ```javascript
18
18
  const data1 = [

19

テキスト修正

2019/07/13 22:28

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  こんにちは。
2
2
 
3
- この回答では、まず、ご質問に挙げられている、オブジェクトの配列 `var data`と同じ内容の配列を作るためのコードを挙げます。その後、追記にて、よりCSVに近い配列を作るコードを示します。
3
+ この回答では、まず、ご質問に挙げられている、オブジェクトの配列 `var data`と同じ内容の配列を作るためのコードを挙げます。その後、追記にて、よりCSVに近い配列を作るコードを示します。
4
4
 
5
5
  ご質問の要件のうち、今後、何が変わる可能性があるのか?によって、書くコードが変わってくると思います。ご質問に挙げられている与件から、今後どうなる可能性があるのかを思いつくままに挙げてみると、以下が思いつきます。
6
6
 
@@ -10,7 +10,7 @@
10
10
  - `data1`および`data2`の要素は、どれも長さが2の配列であるが、今後、3以上になるかもしれない。(つまり、 `num`, `alpha` の次のサフィックスが追加されるかもしれない)
11
11
  - `data1`および`data2`の要素である配列は、どれも長さが2で同じ長さであるが、常にすべてが同じ長さとは限らない。
12
12
 
13
- 上記のような可能性が考えられますが、これらのうち、今後、何が変わるかもしれないのか(または、変わらないのか)がはっきりしていると、リファクタの方向性決まってきます。
13
+ 上記のような可能性が考えられますが、これらのうち、今後、何が変わるかもしれないのか(または、変わらないのか)がはっきりしていると、リファクタの方向性決まます。
14
14
 
15
15
  以下の回答は、上記のどれであっても、修正すべき箇所がなるべく分かりやすいように、という考え方で作成したコードです。
16
16
 

18

テキスト修正

2019/07/13 22:13

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -10,7 +10,7 @@
10
10
  - `data1`および`data2`の要素は、どれも長さが2の配列であるが、今後、3以上になるかもしれない。(つまり、 `num`, `alpha` の次のサフィックスが追加されるかもしれない)
11
11
  - `data1`および`data2`の要素である配列は、どれも長さが2で同じ長さであるが、常にすべてが同じ長さとは限らない。
12
12
 
13
- 上記のような可能性が考えられますが、このうち、今後、何が変わるかもしれないのか(または、変わらないのか)がはっきりしていると、リファクタの方向性も決まってきます。
13
+ 上記のような可能性が考えられますが、これらのうち、今後、何が変わるかもしれないのか(または、変わらないのか)がはっきりしていると、リファクタの方向性も決まってきます。
14
14
 
15
15
  以下の回答は、上記のどれであっても、修正すべき箇所がなるべく分かりやすいように、という考え方で作成したコードです。
16
16
 

17

テキスト修正

2019/07/13 21:50

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -8,7 +8,7 @@
8
8
  - `data1` と `data2` しかないが、`data3`, `data4` ... と増える可能性がある。
9
9
  - `data1` と `data2` はともに要素の数が3で同じだが、いつも同じとは限らない。
10
10
  - `data1`および`data2`の要素は、どれも長さが2の配列であるが、今後、3以上になるかもしれない。(つまり、 `num`, `alpha` の次のサフィックスが追加されるかもしれない)
11
- - `data1`および`data2`の要素である配列は、どれも長さが2で同じ長さであるが、今後、そうでない場合あるかもしれない。
11
+ - `data1`および`data2`の要素である配列は、どれも長さが2で同じ長さであるが、常にすべて同じ長さとは限らない。
12
12
 
13
13
  上記のような可能性が考えられますが、このうち、今後、何が変わるかもしれないのか(または、変わらないのか)がはっきりしていると、リファクタの方向性も決まってきます。
14
14
 

16

テキスト修正

2019/07/13 21:49

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  こんにちは。
2
2
 
3
- この回答では、まず、ご質問に挙げられている、オブジェクトの配列 `var data`と同じ内容の配列を作ることを目的としたコードを回答します。その後、追記にて、よりCSVに近い配列を作るコードを示します。
3
+ この回答では、まず、ご質問に挙げられている、オブジェクトの配列 `var data`と同じ内容の配列を作るためのコードを挙げます。その後、追記にて、よりCSVに近い配列を作るコードを示します。
4
4
 
5
5
  ご質問の要件のうち、今後、何が変わる可能性があるのか?によって、書くコードが変わってくると思います。ご質問に挙げられている与件から、今後どうなる可能性があるのかを思いつくままに挙げてみると、以下が思いつきます。
6
6
 

15

テキスト修正

2019/07/13 21:47

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -108,7 +108,7 @@
108
108
  ```
109
109
  - **上記の動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/c0u1vp87/11/](https://jsfiddle.net/jun68ykt/c0u1vp87/11/)
110
110
 
111
- 以下のような入力にも対応します。
111
+ この回答の冒頭に、入力データの様々な可能性について書きましたが、これらに対応して、上記の関数 `makeCSVData` は以下のような入力にも対応します。
112
112
 
113
113
  ```javascript
114
114
  const d1 = [

14

テキスト修正

2019/07/13 20:10

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -61,7 +61,7 @@
61
61
  ]
62
62
  ```
63
63
 
64
- すので、上記のような配列を得るためのコードを考え、以下のような関数を作成しました。
64
+ そこで、上記のような配列を得るための、以下のような関数を作成しました。
65
65
 
66
66
  ```javascript
67
67
  function makeCSVData(dataObj, columns) {
@@ -137,4 +137,4 @@
137
137
  - **上記の動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/c0u1vp87/10/](https://jsfiddle.net/jun68ykt/c0u1vp87/10/)
138
138
 
139
139
 
140
- ご質問で提示された与件の範囲をかなり超えてしまっているかもしれませんが、汎用化を進めると、こういうコードになるという一例として参考にして頂ければと思います。
140
+ ご質問で提示された与件の範囲をかなり超えた大袈裟なものになっているかもしれませんが、汎用化を進めると、こういうコードになるという一例として参考にして頂ければと思います。

13

テキスト修正

2019/07/13 15:20

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,14 +1,6 @@
1
1
  こんにちは。
2
2
 
3
- この回答では、まず、ご質問に挙げられている、オブジェクトの配列 `data`
4
- ```
5
- var data = [
6
- {'data1-num': data1[0][0],'data1-alpha': data1[0][1],'data2-num': data2[0][0],'data2-alpha': data2[0][1]},
7
- {'data1-num': data1[1][0],'data1-alpha': data1[1][1],'data2-num': data2[1][0],'data2-alpha': data2[1][1]},
8
- {'data1-num': data1[2][0],'data1-alpha': data1[2][1],'data2-num': data2[2][0],'data2-alpha': data2[2][1]},
9
- ];
10
- ```
11
- と同じ内容の配列 `data` を作ることを目的としたコードを回答し、追記にて、よりCSVに近い配列を作るコードを示します。
3
+ この回答では、まず、ご質問に挙げられている、オブジェクトの配列 `var data`と同じ内容の配列を作ることを目的としたコードを回答します。その後、追記にて、よりCSVに近い配列を作るコードを示します。
12
4
 
13
5
  ご質問の要件のうち、今後、何が変わる可能性があるのか?によって、書くコードが変わってくると思います。ご質問に挙げられている与件から、今後どうなる可能性があるのかを思いつくままに挙げてみると、以下が思いつきます。
14
6
 

12

テキスト修正

2019/07/13 15:17

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -58,7 +58,7 @@
58
58
 
59
59
  ### 追記
60
60
 
61
- ご質問のコードにある `data` とは違う内容の配列になりますが、CSV を作るためにより適した配列ということでいえば、以下のような配列のほうがより目的とするCSVに近いと思います。
61
+ CSV を作るためにより適した配列ということでいえば、ご質問のコードにある `data` とは違う配列になりますが、以下のような配列のほうがよりCSVに近いと思います。
62
62
 
63
63
  ```javascript
64
64
  [

11

テキスト修正

2019/07/13 15:06

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -116,7 +116,7 @@
116
116
  ```
117
117
  - **上記の動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/c0u1vp87/11/](https://jsfiddle.net/jun68ykt/c0u1vp87/11/)
118
118
 
119
- 関数 makeCSVData は以下のような入力にも対応します。
119
+ 以下のような入力にも対応します。
120
120
 
121
121
  ```javascript
122
122
  const d1 = [

10

テキスト修正

2019/07/13 14:46

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  こんにちは。
2
2
 
3
- この回答では、ご質問に挙げられている、オブジェクトの配列 `data`
3
+ この回答では、まず、ご質問に挙げられている、オブジェクトの配列 `data`
4
4
  ```
5
5
  var data = [
6
6
  {'data1-num': data1[0][0],'data1-alpha': data1[0][1],'data2-num': data2[0][0],'data2-alpha': data2[0][1]},
@@ -8,7 +8,7 @@
8
8
  {'data1-num': data1[2][0],'data1-alpha': data1[2][1],'data2-num': data2[2][0],'data2-alpha': data2[2][1]},
9
9
  ];
10
10
  ```
11
- と同じ内容の配列 `data` を作ることを目的としたコードを回答します。
11
+ と同じ内容の配列 `data` を作ることを目的としたコードを回答し、追記にて、よりCSVに近い配列を作るコードを示します。
12
12
 
13
13
  ご質問の要件のうち、今後、何が変わる可能性があるのか?によって、書くコードが変わってくると思います。ご質問に挙げられている与件から、今後どうなる可能性があるのかを思いつくままに挙げてみると、以下が思いつきます。
14
14
 

9

テキスト修正

2019/07/13 14:44

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -54,4 +54,95 @@
54
54
  - **動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/3w4je19o/4](https://jsfiddle.net/jun68ykt/3w4je19o/4)
55
55
 
56
56
 
57
- 以上、参考になれば幸いです。
57
+ 以上、参考になれば幸いです。
58
+
59
+ ### 追記
60
+
61
+ ご質問のコードにある `data` とは違う内容の配列になりますが、CSV を作るためにより適した配列ということでいえば、以下のような配列のほうが、より目的とするCSVに近いと思います。
62
+
63
+ ```javascript
64
+ [
65
+ ["data1-num", "data1-alpha", "data2-num" ,"data2-alpha"],
66
+ [1,"A",4,"D"],
67
+ [2,"B",5,"E"],
68
+ [3,"C",6,"F"]
69
+ ]
70
+ ```
71
+
72
+ ですので、上記のような配列を得るためのコードを考え、以下のような関数を作成しました。
73
+
74
+ ```javascript
75
+ function makeCSVData(dataObj, columns) {
76
+ const keys = Object.keys(dataObj).sort();
77
+
78
+ const lengths = keys.reduce((m, k) => m.set(k, Math.max(...dataObj[k].map(ary => ary.length))), new Map());
79
+
80
+ const header = keys.reduce((ary, k) =>
81
+ ary.concat([...Array(lengths.get(k))].map((_, i) => `${k}-${columns[i]}`)), []);
82
+
83
+ const numRows = Math.max(...Object.values(dataObj).map(ary => ary.length));
84
+
85
+ const data = [...Array(numRows)].reduce((ary, _, i) => {
86
+ ary.push(keys.reduce((a, k) =>
87
+ a.concat(
88
+ dataObj[k][i] ?
89
+ [...dataObj[k][i], ...Array(lengths.get(k) - dataObj[k][i].length ) ] :
90
+ [...Array(lengths.get(k))]
91
+ ) ,[]));
92
+ return ary;
93
+ },
94
+ [header]);
95
+
96
+ return data;
97
+ }
98
+ ```
99
+
100
+ 上記の関数 `makeCSVData` は以下のように使います。
101
+
102
+ ```javascript
103
+ const data1 = [
104
+ [1,'A'],
105
+ [2,'B'],
106
+ [3,'C']
107
+ ];
108
+
109
+ const data2 = [
110
+ [4,'D'],
111
+ [5,'E'],
112
+ [6,'F']
113
+ ];
114
+
115
+ const data = makeCSVData({ data1, data2 }, ['num', 'alpha']);
116
+ ```
117
+ - **上記の動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/c0u1vp87/11/](https://jsfiddle.net/jun68ykt/c0u1vp87/11/)
118
+
119
+ 関数 makeCSVData は以下のような入力にも対応します。
120
+
121
+ ```javascript
122
+ const d1 = [
123
+ [1,'A'],
124
+ [2,'B'],
125
+ [3,'C'],
126
+ [-1,'a']
127
+ ];
128
+
129
+ const d2 = [
130
+ [4,'D', true],
131
+ [5,'E'],
132
+ [6,'F', false, 100]
133
+ ];
134
+
135
+ const d3 = [
136
+ [7,'X'],
137
+ [8,'Y'],
138
+ [9,'Z'],
139
+ [-7, 'x'],
140
+ [-8, 'y']
141
+ ];
142
+
143
+ const data = makeCSVData({ d1, d2, d3 }, ['num', 'alpha', 'beta', 'gamma']);
144
+ ```
145
+ - **上記の動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/c0u1vp87/10/](https://jsfiddle.net/jun68ykt/c0u1vp87/10/)
146
+
147
+
148
+ ご質問で提示された与件の範囲をかなり超えてしまっているかもしれませんが、汎用化を進めると、こういうコードになるという一例として参考にして頂ければと思います。

8

テキスト修正

2019/07/13 14:43

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  こんにちは。
2
2
 
3
- この回答では、ご質問に挙げられているコードにあるオブジェクトの配列
3
+ この回答では、ご質問に挙げられているオブジェクトの配列 `data`
4
4
  ```
5
5
  var data = [
6
6
  {'data1-num': data1[0][0],'data1-alpha': data1[0][1],'data2-num': data2[0][0],'data2-alpha': data2[0][1]},
@@ -8,7 +8,7 @@
8
8
  {'data1-num': data1[2][0],'data1-alpha': data1[2][1],'data2-num': data2[2][0],'data2-alpha': data2[2][1]},
9
9
  ];
10
10
  ```
11
- と同じ内容の配列を作ることを目的としたコードを回答します。
11
+ と同じ内容の配列 `data` を作ることを目的としたコードを回答します。
12
12
 
13
13
  ご質問の要件のうち、今後、何が変わる可能性があるのか?によって、書くコードが変わってくると思います。ご質問に挙げられている与件から、今後どうなる可能性があるのかを思いつくままに挙げてみると、以下が思いつきます。
14
14
 
@@ -40,17 +40,18 @@
40
40
  [`${prefix}-alpha`]: ary[1]
41
41
  });
42
42
 
43
- const data = { data1, data2 };
43
+ const dataObj = { data1, data2 };
44
44
 
45
- const tmp = Object.entries(data).map(([k, ary]) => ary.map(e => toObj(e, k)));
45
+ const tmp = Object.entries(dataObj).map(([k, ary]) => ary.map(e => toObj(e, k)));
46
46
 
47
- const result = tmp[0].map((e,i) => ({...e, ...tmp[1][i]}));
47
+ const data = tmp[0].map((e,i) => ({...e, ...tmp[1][i]}));
48
48
 
49
- console.log(result);
49
+ console.log(data);
50
50
 
51
+
51
52
  ```
52
53
 
53
- - **動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/3w4je19o/3](https://jsfiddle.net/jun68ykt/3w4je19o/3)
54
+ - **動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/3w4je19o/4](https://jsfiddle.net/jun68ykt/3w4je19o/4)
54
55
 
55
56
 
56
57
  以上、参考になれば幸いです。

7

テキスト修正

2019/07/13 11:52

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  こんにちは。
2
2
 
3
- この回答は、ご質問に挙げられているコードにある
3
+ この回答は、ご質問に挙げられているコードにあるオブジェクトの配列
4
4
  ```
5
5
  var data = [
6
6
  {'data1-num': data1[0][0],'data1-alpha': data1[0][1],'data2-num': data2[0][0],'data2-alpha': data2[0][1]},
@@ -8,7 +8,7 @@
8
8
  {'data1-num': data1[2][0],'data1-alpha': data1[2][1],'data2-num': data2[2][0],'data2-alpha': data2[2][1]},
9
9
  ];
10
10
  ```
11
- によって作られる、オブジェクトの配列`data` と同じ内容の配列を作ることを目的としたコードを回答します。
11
+ と同じ内容の配列を作ることを目的としたコードを回答します。
12
12
 
13
13
  ご質問の要件のうち、今後、何が変わる可能性があるのか?によって、書くコードが変わってくると思います。ご質問に挙げられている与件から、今後どうなる可能性があるのかを思いつくままに挙げてみると、以下が思いつきます。
14
14
 

6

テキスト修正

2019/07/13 09:38

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,5 +1,15 @@
1
- こんにちは
1
+ こんにちは
2
2
 
3
+ この回答は、ご質問に挙げられているコードにある
4
+ ```
5
+ var data = [
6
+ {'data1-num': data1[0][0],'data1-alpha': data1[0][1],'data2-num': data2[0][0],'data2-alpha': data2[0][1]},
7
+ {'data1-num': data1[1][0],'data1-alpha': data1[1][1],'data2-num': data2[1][0],'data2-alpha': data2[1][1]},
8
+ {'data1-num': data1[2][0],'data1-alpha': data1[2][1],'data2-num': data2[2][0],'data2-alpha': data2[2][1]},
9
+ ];
10
+ ```
11
+ によって作られる、オブジェクトの配列`data` と同じ内容の配列を作ることを目的としたコードを回答します。
12
+
3
13
  ご質問の要件のうち、今後、何が変わる可能性があるのか?によって、書くコードが変わってくると思います。ご質問に挙げられている与件から、今後どうなる可能性があるのかを思いつくままに挙げてみると、以下が思いつきます。
4
14
 
5
15
  ご質問に挙げられているコードでは、

5

テキスト修正

2019/07/13 09:36

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  const data = { data1, data2 };
34
34
 
35
- const tmp = Object.keys(data).map(k => data[k].map(e => toObj(e, k)));
35
+ const tmp = Object.entries(data).map(([k, ary]) => ary.map(e => toObj(e, k)));
36
36
 
37
37
  const result = tmp[0].map((e,i) => ({...e, ...tmp[1][i]}));
38
38
 
@@ -40,7 +40,7 @@
40
40
 
41
41
  ```
42
42
 
43
- - **動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/3w4je19o/2](https://jsfiddle.net/jun68ykt/3w4je19o/2)
43
+ - **動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/3w4je19o/3](https://jsfiddle.net/jun68ykt/3w4je19o/3)
44
44
 
45
45
 
46
46
  以上、参考になれば幸いです。

4

テキスト修正

2019/07/13 08:27

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ご質問の要件のうち、今後、何が変わる可能性があるのか?によって、書くコードが変わってくると思います。ご質問に挙げられている与件から、今後どうなる可能性があるのかを思いつくままに挙げてみると、以下が思いつきます。
4
4
 
5
- ご質問に挙げられてるコードでは、
5
+ ご質問に挙げられてるコードでは、
6
6
  - `data1` と `data2` しかないが、`data3`, `data4` ... と増える可能性がある。
7
7
  - `data1` と `data2` はともに要素の数が3で同じだが、いつも同じとは限らない。
8
8
  - `data1`および`data2`の要素は、どれも長さが2の配列であるが、今後、3以上になるかもしれない。(つまり、 `num`, `alpha` の次のサフィックスが追加されるかもしれない)

3

テキスト修正

2019/07/13 08:15

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,13 +1,14 @@
1
1
  こんにちは
2
2
 
3
- ご質問の要件のうち、今後、何が変わる可能性があるのか?によって、書くコードが変わってくると思います。ご質問に挙げられている与件から、今後どうなる可能性があるのかを思いつくままに挙げてみると、
3
+ ご質問の要件のうち、今後、何が変わる可能性があるのか?によって、書くコードが変わってくると思います。ご質問に挙げられている与件から、今後どうなる可能性があるのかを思いつくままに挙げてみると、以下が思いつきます。
4
4
 
5
+ ご質問に挙げられてるコードでは、
5
- - 質問には、`data1` と `data2` しかないが、`data3`, `data4` ... と増える可能性がある。
6
+ - `data1` と `data2` しかないが、`data3`, `data4` ... と増える可能性がある。
6
- - 質問では、`data1` と `data2` はともに要素の数が3で同じだが、いつも同じとは限らない。
7
+ - `data1` と `data2` はともに要素の数が3で同じだが、いつも同じとは限らない。
7
- - 質問では、`data1`および`data2`の要素は、どれも長さが2の配列であるが、今後、3以上になるかもしれない。(つまり、 `num`, `alpha` の次のサフィックスが追加されるかもしれない)
8
+ - `data1`および`data2`の要素は、どれも長さが2の配列であるが、今後、3以上になるかもしれない。(つまり、 `num`, `alpha` の次のサフィックスが追加されるかもしれない)
8
- - 質問では、`data1`および`data2`の要素である配列は、どれも長さが2で同じ長さであるが、今後、そうでない場合があるかもしれない。
9
+ - `data1`および`data2`の要素である配列は、どれも長さが2で同じ長さであるが、今後、そうでない場合があるかもしれない。
9
10
 
10
- といったことが考えられますが、このうち、今後、何が変わるかもしれないのか(または、変わらないのか)がはっきりしていると、リファクタの方向性も決まってきます。
11
+ 上記のような可能性が考えられますが、このうち、今後、何が変わるかもしれないのか(または、変わらないのか)がはっきりしていると、リファクタの方向性も決まってきます。
11
12
 
12
13
  以下の回答は、上記のどれであっても、修正すべき箇所がなるべく分かりやすいように、という考え方で作成したコードです。
13
14
 

2

テキスト修正

2019/07/13 07:55

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -5,7 +5,7 @@
5
5
  - 質問には、`data1` と `data2` しかないが、`data3`, `data4` ... と増える可能性がある。
6
6
  - 質問では、`data1` と `data2` はともに要素の数が3で同じだが、いつも同じとは限らない。
7
7
  - 質問では、`data1`および`data2`の要素は、どれも長さが2の配列であるが、今後、3以上になるかもしれない。(つまり、 `num`, `alpha` の次のサフィックスが追加されるかもしれない)
8
- - 質問では、`data1`および`data2`の要素は、どれも長さが2で同じ長さであるが、今後、そうでない場合があるかもしれない。
8
+ - 質問では、`data1`および`data2`の要素である配列は、どれも長さが2で同じ長さであるが、今後、そうでない場合があるかもしれない。
9
9
 
10
10
  といったことが考えられますが、このうち、今後、何が変わるかもしれないのか(または、変わらないのか)がはっきりしていると、リファクタの方向性も決まってきます。
11
11
 

1

テキスト修正

2019/07/13 06:54

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  こんにちは
2
2
 
3
- ご質問の要件のうち、今後、何が変わる可能性があるのか?によって、書くコードが変わってくると思います。ご質問に挙げられている与件から、今後どうなる可能性があるのか、という想定を思いつくままに挙げてみると、
3
+ ご質問の要件のうち、今後、何が変わる可能性があるのか?によって、書くコードが変わってくると思います。ご質問に挙げられている与件から、今後どうなる可能性があるのかを思いつくままに挙げてみると、
4
4
 
5
5
  - 質問には、`data1` と `data2` しかないが、`data3`, `data4` ... と増える可能性がある。
6
6
  - 質問では、`data1` と `data2` はともに要素の数が3で同じだが、いつも同じとは限らない。
@@ -33,13 +33,13 @@
33
33
 
34
34
  const tmp = Object.keys(data).map(k => data[k].map(e => toObj(e, k)));
35
35
 
36
- var result = tmp[0].map((e,i) => ({...e, ...tmp[1][i]}));
36
+ const result = tmp[0].map((e,i) => ({...e, ...tmp[1][i]}));
37
37
 
38
38
  console.log(result);
39
39
 
40
40
  ```
41
41
 
42
- - **動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/3w4je19o/1](https://jsfiddle.net/jun68ykt/3w4je19o/1)
42
+ - **動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/3w4je19o/2](https://jsfiddle.net/jun68ykt/3w4je19o/2)
43
43
 
44
44
 
45
45
  以上、参考になれば幸いです。