2017-07-01 4 views
0

helpers.jsというファイルに次の再帰関数を保存しました。別のファイルからノードjsに再帰関数を含めるには

var helpers = require('./helpers'); 

を使用して、メインのapp.jsファイルにロードされたときは、部分的にしか動作しません。ライン:JSONの構文解析は、ネストされたレベルに再帰しないように

s+=recurseJSON(o[a]); 

は呼び出されません。

私もまだ動作しません、以下を試してみました:

s+=helpers.recurseJSON(o[a]); 

私はメインapp.jsファイルに以下のコードを移動した場合、再帰は完璧に動作し、明らかに

recurseJSON: function(o) {... 
を変更

function recurseJSON(o) {.. 

に自分の考えが理解されています。

module.exports = { 
recurseJSON: function(o){ 
    var s = ''; 
    for(var a in o){ 
     if (typeof o[a] == 'object'){ 
      s+=a+':'; 
      console.log('JSON>', a, ":"); 
      s+=recurseJSON(o[a]); // This line should recurse but doesn't 
     }else{ 
      s+=a+':'+o[a]+' '; 
      console.log('JSON>', a, ":", o[a]); 
     }//end if 
    }//end for 
    return s; 
} 
}; 

PS::オリジナルの再帰的なコードのRecursively parsing JSONの功績ここでは、全体のコードです。

+0

です。おそらく、JSONの各キーと値のペアを繰り返し実行しますが、再帰的な方法で繰り返します。 –

+0

この回答を見るhttps://stackoverflow.com/a/26536906 – RamKumar

答えて

0

このような輸出声明残しながら:

module.exports = { 
    iterateJSON: function(o){ 
    ... 
    } 
}; 

をあなたは声明s+=this.iterateJSON(o[a])を使用して再帰関数を呼び出すが、唯一のあなたは、ファイルの外iterateJSON()機能を呼び出す唯一の方法は

helpers.iterateJSON(obj) 
であると仮定することができます

iterateJSON()helpersの呼び出し元であり、thisiterateJSON()とすると、helpersを参照してください。

あなたがこれを保証できない場合は、より冗長である、それを呼び出すための正しい方法は、関数が自分自身を呼び出すと、それは_recursive_、ない_iterative_ある

s+=module.exports.iterateJSON(o[a]) 
+1

それを解決しました、ありがとう...大変感謝しています! –

関連する問題