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

質問編集履歴

4

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

2016/07/27 00:10

投稿

kaiji0811
kaiji0811

スコア7

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
- ```javascript
6
+ 本来はarrのlength分だけ関数呼び出しを行いたい(今回で言うと三回)のですが、
7
- if (trees.length > 0) {
7
+ 実際にはarr.length0のときも呼び出しが行われてしまうので、
8
- dataExtracter(result, trees, param);
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

2016/07/27 00:10

投稿

kaiji0811
kaiji0811

スコア7

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

2016/07/26 23:47

投稿

kaiji0811
kaiji0811

スコア7

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

2016/07/26 23:37

投稿

kaiji0811
kaiji0811

スコア7

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  javascriptの再帰関数についてご質問です。
2
2
 
3
- JSONのパをするための抽出機能を作成するため、
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(JSON, arr, 'name');
40
+ result = dataExtracter(datas, arr, 'name');
18
41
 
19
42
  function dataExtracter(datas, trees, param) {
20
43