2016-06-23 17 views
2

私はtxtファイルにオブジェクトの配列としていくつかの変数を保存していますが、どうすればそれらを読み込み、forループ内の別の変数と比較できますか?nodejsのif文のtxtファイルを読む

ありがとうございました。

私はtxtファイルで保存形式:

[{"sekke":"445,675","halfsekke":"145,600"}] 

と私が読みたいコードは次のとおりです。
NodeJs:

var array = fs.readFileSync('data.txt').toString().split("\n"); 
      console.log(array[0]['sekke']) 
      for (var key in array[0]['sekke']) { 
       console.log("key " + key + " has value " + array); 
      } 

間違っている、どのようにすることができますこのような何かを読む?

if (array['sekke] == 100){ 
console.log("is ok"); 
} 

答えて

2

以下のコードで試してみてください。

fs.readFile('data.txt', 'utf8', function read(err, data) { 
     if (err) { 
     throw err; 
     } 
     data = JSON.parse(data); 
     var dataObject = data[0]; 
     for (i=0;i<Object.keys(dataObject).length;i++) { 
      var ss = dataObject[i]; 
      var key = Object.keys(ss); 
      for(varj=0;j<ss[key];j++){ 
      //your if condition logic 
      } 
     } 
    }); 
+0

(ファイルが大きくなるにつれてそれが問題となる)、それは読んでいる間、readFileSyncは全体のNode.jsアプリをブロックします使用するなどreadFileの非同期バージョンを使用することを検討おかげで、しかし、私は、すべてのループにしたいです変数を追加してif文 – sani

+0

@ saniあなたの問題が解決したかどうか? – Subburaj

+0

はい私はちょうどこのような何かでそれを解決:(ERR){ \t \t \t \t \t投げる場合fs.readFile( 'data.txtを'、 'UTF8'、関数の読み取り(ERR、データ){ \t \t \t \t ERR; \t \t \t \t} \t \t \t \tデータ= JSON.parse(データ); \t \t \t \tにconsole.log(データ); (データ内のvarキー)のための\t \t \t(のparseInt(データ[0]場合{ \t \t \t \t \t //あなたのロジックがここに \t \t \t \t \tにconsole.log(キー) \t \t \t \t \tを行きます['sekke'] == parseInt(oldNumberTwo)){ \t \t \t \t \t \tコンソールです。log( "同じ"); \t \t \t \t \t}他{ \t \t \t \t \t \tはconsole.log( "変更")。 \t \t \t \t \t} \t \t \t \t} \t \t \t})。 – sani

2

あなたがオブジェクトのようにそれを使用したい場合は戻っJSONに文字列を解析する必要があります。 ファイルが配列のコレクション(1行に1つの配列)であれば、\ nと同じように分割してから、JSON.parseで解析します。別々に考えられるので、マップやループを使用して各行で実行する必要があります。 しかし、あなたのファイルがオブジェクトの1つの大きな配列である場合、それを読み込んで、JSON.parseですべてを解析してください。また

関連する問題