質問編集履歴

4

すみません、色々と説明不足な上、切り貼りしたコードによってそもそもおかしな記述となっていた部分を修正しました。

2016/07/27 00:10

投稿

kaiji0811
kaiji0811

スコア7

test CHANGED
File without changes
test CHANGED
@@ -6,21 +6,13 @@
6
6
 
7
7
  以下の関数を定義して呼び出したところ、
8
8
 
9
- 何故か```trees.length === 0```の時も
9
+ 何故か```trees.length === 0```の時も実行されてしまいます。
10
10
 
11
- ```javascript
11
+ 本来はarrのlength分だけ関数呼び出しを行いたい(今回で言うと三回)のですが、
12
12
 
13
- if (trees.length > 0) {
13
+ 実際にはarr.length0のときも呼び出しが行われてしまうので、
14
14
 
15
- dataExtracter(result, trees, param);
16
-
17
- }
18
-
19
- ```
20
-
21
-
22
-
23
- の条件式を通過してしまいます。
15
+ datasがundefinedになってしまいます。
24
16
 
25
17
 
26
18
 
@@ -134,4 +126,4 @@
134
126
 
135
127
  初めてプログラムで再帰関数を使用したのですが、
136
128
 
137
- 何か考え方が間違っているのでしょうか。
129
+ 何か考え方が間違っているのでしょうか。R

3

2016/07/27 00:10

投稿

kaiji0811
kaiji0811

スコア7

test CHANGED
File without changes
test CHANGED
@@ -92,7 +92,9 @@
92
92
 
93
93
  function dataExtracter(datas, trees, param) {
94
94
 
95
-
95
+ if (!trees.length) return datas;
96
+
97
+
96
98
 
97
99
  datas.map(function(item) {
98
100
 

2

2016/07/26 23:47

投稿

kaiji0811
kaiji0811

スコア7

test CHANGED
File without changes
test CHANGED
@@ -64,7 +64,17 @@
64
64
 
65
65
  ]
66
66
 
67
- }
67
+ },
68
+
69
+ {...},
70
+
71
+ {...},
72
+
73
+ .
74
+
75
+ .
76
+
77
+ .
68
78
 
69
79
  ]
70
80
 

1

2016/07/26 23:37

投稿

kaiji0811
kaiji0811

スコア7

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- JSONパースをするための抽出機能を作成するため、
5
+ nodejsでwebページ解析をするため、htmlparserで生成したjsonの抽出機能を作成するため、
6
6
 
7
7
  以下の関数を定義して呼び出したところ、
8
8
 
@@ -28,9 +28,55 @@
28
28
 
29
29
 
30
30
 
31
+ // htmlparserで取得したデータのサンプルです。
32
+
33
+ // 取得するデータはwebページにより異なり、順番やデータ数は変化するものとお考えください。
34
+
35
+ var datas = [
36
+
37
+ {
38
+
39
+ name: html,
40
+
41
+ children: [
42
+
43
+ {
44
+
45
+ name: head,
46
+
47
+ children: [
48
+
49
+ {
50
+
51
+ name: meta,
52
+
53
+ children: [{...},{...}, ...]
54
+
55
+ },
56
+
57
+ {
58
+
59
+ name: title,
60
+
61
+ children: [{...},{...}, ...]
62
+
63
+ }
64
+
65
+ ]
66
+
67
+ }
68
+
69
+ ]
70
+
71
+ }
72
+
73
+ ];
74
+
75
+
76
+
31
77
  var arr = [ 'html', 'head', 'title' ],
32
78
 
33
- result = dataExtracter(JSON, arr, 'name');
79
+ result = dataExtracter(datas, arr, 'name');
34
80
 
35
81
 
36
82