2017-05-13 21 views
2

私はexpressjsを使用していますが、2つのjsonオブジェクトが同じかどうかを確認しようとしています。ここに私のコードです。私が間違っていることを教えてくれますか?2つのjsonオブジェクトが等価であるかどうかをテストします。

app.get('/comp', function(req, res){ 
var body = { 

     complexes: [ 
      { "Réponse 1":req.query.rep1}, 
      { "Réponse 2":req.query.rep2}, 
      { "Réponse 3":req.query.rep3 
      }] 
    }; 

filePath = '/home/smath/'+req.query.id+'.json'; 

    console.log(filePath); 

var score_comp = 0; 

fs.readFile('/home/smath/reponses_comp.json', 'utf8', function (err, data) { 
     var jsondata = JSON.parse(data); 
     for (var i=0; i<jsondata.complexes.length; i++){ 
      if (body.complexes[i] == jsondata.complexes[i]) 
     { score_comp++ } 
    } 
}) 

そして、ここではreponse_comp.jsonファイルを垣間見るだ

{"complexes":[ 
{"Réponse 1":"a."}, 
{"Réponse 2":"a."}, 
{"Réponse 3":"a."}]} 
+0

次の2つの配列または2を比較するために、 '=='使用することはできませんオブジェクト。それは、彼らが(同じではない)同じ正確なオブジェクトであるかどうかだけを伝えるので、平等を見ることは決してありません。代わりに、配列またはオブジェクトの場合は、個々の配列要素またはオブジェクトのプロパティを比較して、それらが同じ内容を含んでいるかどうかを確認する必要があります。 Javascriptの2つのオブジェクトを比較するために、他にもたくさんの答えがあり、Web上にコードスニペットがあります。自分で書く必要はありません。 – jfriend00

答えて

0

最も簡単な方法は次のとおりです。

JSON.stringify(obj1) === JSON.stringify(obj2) 
+0

プロパティが2つのJSON文字列で同じ順序で表されるという保証はありません。 – jfriend00

関連する問題