質問編集履歴
4
すみません、色々と説明不足な上、切り貼りしたコードによってそもそもおかしな記述となっていた部分を修正しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,15 +2,11 @@
|
|
2
2
|
|
3
3
|
nodejsでwebページの解析をするため、htmlparserで生成したjsonの抽出機能を作成するため、
|
4
4
|
以下の関数を定義して呼び出したところ、
|
5
|
-
何故か```trees.length === 0```の時も
|
5
|
+
何故か```trees.length === 0```の時も実行されてしまいます。
|
6
|
-
|
6
|
+
本来はarrのlength分だけ関数呼び出しを行いたい(今回で言うと三回)のですが、
|
7
|
-
|
7
|
+
実際にはarr.lengthが0のときも呼び出しが行われてしまうので、
|
8
|
-
|
8
|
+
datasがundefinedになってしまいます。
|
9
|
-
}
|
10
|
-
```
|
11
9
|
|
12
|
-
の条件式を通過してしまいます。
|
13
|
-
|
14
10
|
```javascript
|
15
11
|
|
16
12
|
// htmlparserで取得したデータのサンプルです。
|
@@ -66,4 +62,4 @@
|
|
66
62
|
```
|
67
63
|
|
68
64
|
初めてプログラムで再帰関数を使用したのですが、
|
69
|
-
何か考え方が間違っているのでしょうか。
|
65
|
+
何か考え方が間違っているのでしょうか。R
|
3
title
CHANGED
File without changes
|
body
CHANGED
@@ -45,7 +45,8 @@
|
|
45
45
|
result = dataExtracter(datas, arr, 'name');
|
46
46
|
|
47
47
|
function dataExtracter(datas, trees, param) {
|
48
|
-
|
48
|
+
if (!trees.length) return datas;
|
49
|
+
|
49
50
|
datas.map(function(item) {
|
50
51
|
|
51
52
|
if (item[param] === trees[0]) {
|
2
title
CHANGED
File without changes
|
body
CHANGED
@@ -31,7 +31,12 @@
|
|
31
31
|
children: [{...},{...}, ...]
|
32
32
|
}
|
33
33
|
]
|
34
|
-
}
|
34
|
+
},
|
35
|
+
{...},
|
36
|
+
{...},
|
37
|
+
.
|
38
|
+
.
|
39
|
+
.
|
35
40
|
]
|
36
41
|
}
|
37
42
|
];
|
1
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
javascriptの再帰関数についてご質問です。
|
2
2
|
|
3
|
-
|
3
|
+
nodejsでwebページの解析をするため、htmlparserで生成したjsonの抽出機能を作成するため、
|
4
4
|
以下の関数を定義して呼び出したところ、
|
5
5
|
何故か```trees.length === 0```の時も
|
6
6
|
```javascript
|
@@ -13,8 +13,31 @@
|
|
13
13
|
|
14
14
|
```javascript
|
15
15
|
|
16
|
+
// htmlparserで取得したデータのサンプルです。
|
17
|
+
// 取得するデータはwebページにより異なり、順番やデータ数は変化するものとお考えください。
|
18
|
+
var datas = [
|
19
|
+
{
|
20
|
+
name: html,
|
21
|
+
children: [
|
22
|
+
{
|
23
|
+
name: head,
|
24
|
+
children: [
|
25
|
+
{
|
26
|
+
name: meta,
|
27
|
+
children: [{...},{...}, ...]
|
28
|
+
},
|
29
|
+
{
|
30
|
+
name: title,
|
31
|
+
children: [{...},{...}, ...]
|
32
|
+
}
|
33
|
+
]
|
34
|
+
}
|
35
|
+
]
|
36
|
+
}
|
37
|
+
];
|
38
|
+
|
16
39
|
var arr = [ 'html', 'head', 'title' ],
|
17
|
-
result = dataExtracter(
|
40
|
+
result = dataExtracter(datas, arr, 'name');
|
18
41
|
|
19
42
|
function dataExtracter(datas, trees, param) {
|
20
43
|
|