回答編集履歴
15
テキスト修正
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
-
とは、どの
|
15
|
+
とは、具体的にはどのような階層構造の中に目的の配列があるのかについて、ご質問からは読み取れませんでしたので、全体の配列の中のどこにあっても、長さが2で要素が文字列か数字であるような
|
16
16
|
|
17
17
|
|
18
18
|
|
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
-
を拾い出す
|
23
|
+
を拾い出すコードを回答します。なお、以下では、この
|
24
24
|
|
25
25
|
> 一番小さい配列
|
26
26
|
|
@@ -28,7 +28,7 @@
|
|
28
28
|
|
29
29
|
|
30
30
|
|
31
|
-
のことを `minimal
|
31
|
+
のことを `minimal な配列` と呼び、 minimal な配列の先頭要素を `head`, 2番目の要素を `tail` と呼ぶことにして、これらを変数名やプロパティ名、関数名に使っています。
|
32
32
|
|
33
33
|
|
34
34
|
|
14
テキスト修正
test
CHANGED
@@ -116,7 +116,7 @@
|
|
116
116
|
|
117
117
|
|
118
118
|
|
119
|
-
上記で、選ばれたファイルの内容を受け取って、結果を返す `assort` という関数を
|
119
|
+
上記で、選ばれたファイルの内容を受け取って、結果を返す `assort` という関数を作りました。関数 `assort` は、以下のファイル `assort.js` の最後にあります。minimal な配列を収集した後、重複を除くための処理に、 lodash の [uniqBy](https://lodash.com/docs/4.17.15#uniqBy) を使っています。
|
120
120
|
|
121
121
|
|
122
122
|
|
@@ -412,15 +412,15 @@
|
|
412
412
|
|
413
413
|
|
414
414
|
|
415
|
-
- `getMinimals` が再帰関数になっているので、想定していない入力があると無限ループになる恐れがありますので、実用化するには何らかの対策が必要
|
415
|
+
- `getMinimals` が再帰関数になっているので、想定していない入力があると無限ループになる恐れがありますので、実用化するには何らかの対策が必要
|
416
|
-
|
417
|
-
|
418
|
-
|
416
|
+
|
417
|
+
|
418
|
+
|
419
|
-
- 一度、すべての minimal な配列を拾い出してから分類しているので、やや冗長なコードになってい
|
419
|
+
- 一度、すべての minimal な配列を拾い出してから分類しているので、やや冗長なコードになっています。
|
420
|
-
|
421
|
-
|
422
|
-
|
420
|
+
|
421
|
+
|
422
|
+
|
423
|
-
といった
|
423
|
+
といった課題が残りますが、各論はさておき、上記のコードで示したいことは、
|
424
424
|
|
425
425
|
|
426
426
|
|
13
テキスト修正
test
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
|
33
33
|
|
34
34
|
|
35
|
-
### index.html
|
35
|
+
### index.html
|
36
36
|
|
37
37
|
```html
|
38
38
|
|
@@ -120,7 +120,7 @@
|
|
120
120
|
|
121
121
|
|
122
122
|
|
123
|
-
### assort.js
|
123
|
+
### assort.js
|
124
124
|
|
125
125
|
```javascript
|
126
126
|
|
12
テキスト修正
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
-
とは、どの程度、配列が入れ子になっているのかがご質問からは読み取れませんでしたので、入れ子の深さに
|
15
|
+
とは、どの程度、配列が入れ子になっているのかがご質問からは読み取れませんでしたので、入れ子の深さに関わらず、長さが2で要素が文字列か数字であるような
|
16
16
|
|
17
17
|
|
18
18
|
|
11
テキスト修正
test
CHANGED
@@ -408,11 +408,19 @@
|
|
408
408
|
|
409
409
|
|
410
410
|
|
411
|
+
上記の回答に書いたコードでは、
|
412
|
+
|
413
|
+
|
414
|
+
|
411
|
-
`getMinimals` が再帰関数になっているので、想定していない入力があると無限ループになる恐れがありますので、実用化するには何らかの対策が必要かもしれません。
|
415
|
+
- `getMinimals` が再帰関数になっているので、想定していない入力があると無限ループになる恐れがありますので、実用化するには何らかの対策が必要かもしれません。
|
416
|
+
|
417
|
+
|
418
|
+
|
412
|
-
|
419
|
+
- 一度、すべての minimal な配列を拾い出してから分類しているので、やや冗長なコードになっていると思います。
|
413
|
-
|
414
|
-
|
420
|
+
|
421
|
+
|
422
|
+
|
415
|
-
上記のコードで示したい
|
423
|
+
といった問題点がありますが、各論はさておき、上記のコードで示したいことは、
|
416
424
|
|
417
425
|
|
418
426
|
|
@@ -431,13 +439,3 @@
|
|
431
439
|
|
432
440
|
|
433
441
|
以上、参考になれば幸いです。
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
#### 追記
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
上記の回答に書いたコードは、やや冗長なコードになっていると思います。リファクタできたら、またのちほど追記します。
|
10
テキスト修正
test
CHANGED
@@ -420,7 +420,7 @@
|
|
420
420
|
|
421
421
|
2. JSONをパースして、JavaScript の配列を得る。
|
422
422
|
|
423
|
-
3. 得られた配列から、minimalな配列を拾い出すために再帰を使うことができる。
|
423
|
+
3. 得られた配列の要素から、minimalな配列を拾い出すために再帰を使うことができる。
|
424
424
|
|
425
425
|
4. 拾い出した minimalな配列 を分類する。
|
426
426
|
|
9
テキスト修正
test
CHANGED
@@ -28,7 +28,7 @@
|
|
28
28
|
|
29
29
|
|
30
30
|
|
31
|
-
のことを `minimal` な配列と呼び、 minimal な配列の先頭要素を `head`, 2番目の要素を `tail` と
|
31
|
+
のことを `minimal` な配列と呼び、 minimal な配列の先頭要素を `head`, 2番目の要素を `tail` と呼ぶことにして、これらを変数名やプロパティ名、関数名に使っています。
|
32
32
|
|
33
33
|
|
34
34
|
|
8
テキスト修正
test
CHANGED
@@ -116,7 +116,7 @@
|
|
116
116
|
|
117
117
|
|
118
118
|
|
119
|
-
上記で、選ばれたファイルの内容を受け取って、結果を返す `assort` という関数を呼んでいます。
|
119
|
+
上記で、選ばれたファイルの内容を受け取って、結果を返す `assort` という関数を呼んでいます。関数 `assort` は、以下のファイル `assort.js` の最後にあります。`assort.js` の中で、配列から重複を除くための処理に lodash の [uniqBy](https://lodash.com/docs/4.17.15#uniqBy) を使っています。
|
120
120
|
|
121
121
|
|
122
122
|
|
7
テキスト修正
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
-
と
|
15
|
+
とは、どの程度、配列が入れ子になっているのかがご質問からは読み取れませんでしたので、入れ子の深さに限らず、長さが2で要素が文字列か数字であるような
|
16
16
|
|
17
17
|
|
18
18
|
|
@@ -28,7 +28,7 @@
|
|
28
28
|
|
29
29
|
|
30
30
|
|
31
|
-
のことを `minimal` な配列と呼び、 minimal な配列の先頭要素を `head`, 2番目の要素を `tail` ということにして、変数名や関数名に使っています。
|
31
|
+
のことを `minimal` な配列と呼び、 minimal な配列の先頭要素を `head`, 2番目の要素を `tail` ということにして、これらを変数名やプロパティ名、関数名に使っています。
|
32
32
|
|
33
33
|
|
34
34
|
|
6
テキスト修正
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
-
というのが、どの程度入れ子になっているのかが、ご質問からは
|
15
|
+
というのが、どの程度入れ子になっているのかが、ご質問からは読み取れませんでしたので、深さに限らず、長さが2で要素が文字列か数字であるような
|
16
16
|
|
17
17
|
|
18
18
|
|
5
テキスト修正
test
CHANGED
@@ -230,11 +230,7 @@
|
|
230
230
|
|
231
231
|
// 配列要素として出現する変数名をダブルコーテーションで囲む。
|
232
232
|
|
233
|
-
const jsonStr = text.replace(/([a-z][a-z0-9]*)/g, name =>
|
233
|
+
const jsonStr = text.replace(/([a-z][a-z0-9]*)/g, name => `"${name}"`);
|
234
|
-
|
235
|
-
`"${name}"`
|
236
|
-
|
237
|
-
);
|
238
234
|
|
239
235
|
|
240
236
|
|
4
テキスト修正
test
CHANGED
@@ -244,7 +244,7 @@
|
|
244
244
|
|
245
245
|
|
246
246
|
|
247
|
-
// 最小配列(要素の数が2個で、要素が数
|
247
|
+
// 最小配列(要素の数が2個で、要素が数または文字列の配列) を収集
|
248
248
|
|
249
249
|
const minimals = _.uniqBy(getMinimals(data), e => e.join(','))
|
250
250
|
|
3
テキスト修正
test
CHANGED
@@ -424,7 +424,7 @@
|
|
424
424
|
|
425
425
|
2. JSONをパースして、JavaScript の配列を得る。
|
426
426
|
|
427
|
-
3. 得られた配列から、minimalな配列を拾い出すために再帰を使う。
|
427
|
+
3. 得られた配列から、minimalな配列を拾い出すために再帰を使うことができる。
|
428
428
|
|
429
429
|
4. 拾い出した minimalな配列 を分類する。
|
430
430
|
|
2
テキスト修正
test
CHANGED
@@ -116,7 +116,7 @@
|
|
116
116
|
|
117
117
|
|
118
118
|
|
119
|
-
上記で、選ばれたファイルの内容を受け取って、結果を返す `assort` という関数を呼んでいます。これは以下のようなものです。(関数 assort は、以下のファイル assort.js の最後にあります。)
|
119
|
+
上記で、選ばれたファイルの内容を受け取って、結果を返す `assort` という関数を呼んでいます。これは以下のようなものです。(関数 assort は、以下のファイル assort.js の最後にあります。また、配列から重複を除くための処理に lodash の [uniqBy](https://lodash.com/docs/4.17.15#uniqBy) を使っています。)
|
120
120
|
|
121
121
|
|
122
122
|
|
@@ -444,4 +444,4 @@
|
|
444
444
|
|
445
445
|
|
446
446
|
|
447
|
-
上記の回答に書いたコードは、やや冗長なコードになっていると思います
|
447
|
+
上記の回答に書いたコードは、やや冗長なコードになっていると思います。リファクタできたら、またのちほど追記します。
|
1
テキスト修正
test
CHANGED
@@ -435,3 +435,13 @@
|
|
435
435
|
|
436
436
|
|
437
437
|
以上、参考になれば幸いです。
|
438
|
+
|
439
|
+
|
440
|
+
|
441
|
+
|
442
|
+
|
443
|
+
#### 追記
|
444
|
+
|
445
|
+
|
446
|
+
|
447
|
+
上記の回答に書いたコードは、やや冗長なコードになっていると思いますので、リファクタできたら、またのちほど追記します。
|