2016-04-07 23 views
0

2つのjson値のリストを比較しようとしました。比較が真である場合、表示を表示せず、文が偽であるところの値のみを表示してください。javascriptエラーで配列を比較する

var files= '{"files":[{"name":"doc1.pdf","title":"networking","path":"mfpreader.comze.com\/files\/doc1.pdf"},{"name":"doc2.pdf","title":"Armoogum","path":"mfpreader.comze.com\/files\/doc2.pdf"}]}'; 
    var result = '[{"name":"doc1.pdf","title":"networking","path":"mfpreader.comze.com\/files\/doc1.pdf"},'; 

     for (var i = 0; i < files.length; i++) { 
            var file = files[i];     
         for(var j=0;j<arrayResults.length;j++){ 

          if (files[i]==arrayResults[j].json.name){ 
           alert("Matching found"); 
          //full_list = full_list + arrayResults[j].json.name + " " + arrayResults[j]._id + " " + arrayResults[j].json.title + " " + arrayResults[j].json.path + '<br />'; 

          }else { 

          alert("no similar files"); 
          str += '<br /><div class="fileSection">' + '<br/>' + '<input class="fileName" type="hidden" value="'+ file.name + '" />' + file.name + '<br/>' + '<input class="fileTitle" type="hidden" value="'+ file.title +'" />' + file.title + '<br/>' + '<input class="filePath" type="hidden" value="'+ file.path +'" />' + '<button onclick="add(this)">Add</button> '+ '</div><br/>' ; 

          }       


        } 

出力結果がdoc2.pdfのための唯一のJSONリストでなければなりません。ここで

はコードです。代わりに、すべてのリストを表示するだけです。

私はいくつかの助けを得ることができます非常に感謝します。

+0

ファイルでも配列ではない、それは文字列です。 –

+1

@cale_b残念ながら、lodashはJSON文字列とJavaScriptオブジェクトの間の概念的な混乱を助けません。 –

答えて

0

修正するには、いくつかのものがあります。主に、あなたは、データを抽出するためにJSON.parse()を使用することができます。

var files= '{"files":[{"name":"doc1.pdf","title":"networking","path":"mfpreader.comze.com\/files\/doc1.pdf"},{"name":"doc2.pdf","title":"Armoogum","path":"mfpreader.comze.com\/files\/doc2.pdf"}]}'; 
 
var result = '[{"name":"doc1.pdf","title":"networking","path":"mfpreader.comze.com\/files\/doc1.pdf"}]'; 
 

 
// you need to convert the above strings to arrays: 
 
files = JSON.parse(files).files; // You need the files property 
 
arrayResults = JSON.parse(result); 
 

 
for (var i = 0; i < files.length; i++) { 
 
    var file = files[i]; 
 
    for(var j=0;j<arrayResults.length;j++){ 
 
     // note the name property on the files[i] object: 
 
     if (files[i].name===arrayResults[j].name){ 
 
      alert("Matching found for " + files[i].name); 
 
     }else { 
 
      alert("no similar files for " + files[i].name); 
 
     } 
 
    } 
 
}

0

===をタイプ変換なしで==の代わりに使用する方がよい場合は、javacriptで何かを比較したい方がよいでしょう。

はこちらをご覧ください:Equality comparisons and sameness

+0

そして、なぜそれがここで何を変えるだろうか? –

+0

@torazaburo私は彼のコードをテストしていない、ちょうど示唆 –

+0

コメントのような音、答えではない。 –

関連する問題