2017-05-10 19 views
0

JSON形式をループしようとしていますが、正しく動作しません。 "id_first"プリント1と2を正しくループしているが、id_secondに向かうステップの後で、私のループ呼び出しが "id_first"だけであるにもかかわらず未定義になってしまう。どのようにして私のループ印刷を初めて行うことができますか?ループJSON形式

マイコード:

$(document).ready(function() { 
    $.ajax({ 
    url: "http://192.168.1.190/tmp/data.json", 
    method: "GET", 
    success: function(data) { 
     var id_first = []; 

     for (var i in data) { 
     id_first.push(data[i].id_first); 
     alert(data[i].id_first); 
     } 
    }, 
    error: function(data) { 
     console.log('error'); 
    } 
    }); 
}); 

データ:

[{ 
    "id_first": "1", 
    "data_first": "1" 
}, { 
    "id_first": "2", 
    "data_first": "2" 
}, { 
    "id_second": "1", 
    "data_second": "1" 
}, { 
    "id_second": "2", 
    "data_second": "2" 
}] 

答えて

0

はいその後、アレイにプッシュする場合id_firstがループ 内data[i].id_first != undefinedに存在するかどうかを確認します。だから、唯一の有効な(undefinedではないが)id_first配列

var id_first=[] 
 
var data = [{ 
 
    "id_first": "1", 
 
    "data_first": "1" }, { 
 
    "id_first": "2", 
 
    "data_first": "2" }, { 
 
    "id_second": "1", 
 
    "data_second": "1" }, { 
 
    "id_second": "2", 
 
    "data_second": "2" }] 
 
    for(var i in data) { 
 
    if(data[i].id_first != undefined){ 
 
      id_first.push(data[i].id_first); 
 
      alert(data[i].id_first); 
 
      } 
 
    } 
 
     console.log(id_first);

0

、配列に押し込み存在する場合は、「id_first」プロパティは、JSONオブジェクト内か存在しているされているかどうかをまずチェックに追加されますそれ以外の場合はスキップしてください。

$(document).ready(function(){ 
    $.ajax({ 
     url: "http://192.168.1.190/tmp/data.json", 
     method: "GET", 
     success: function(data) { 
      var id_first=[] 

      for(var i in data) { 

      if(data[i].id_first){ 
        id_first.push(data[i].id_first); 
        alert(data[i].id_first); 
      } 

      } 

     }, 
     error: function(data) { 
      console.log('error'); 
     } 
    }); 
    }); 
0

未定義アクセスしたいプロパティが定義されて利用できるかどうかではないことを意味します。

したがって、この問題を解決するには、配列にプッシュする前にオブジェクトにプロパティが存在するかどうかをチェックする必要があります。

DEMO

$(document).ready(function() { 
    $.ajax({ 
     url: "http://192.168.1.190/tmp/data.json", 
     method: "GET", 
     success: function(data) { 
      var id_first=[]; 
      for(var i in data) { 
      if(data[i].id_first) { 
       id_first.push(data[i].id_first); 
      } 

      } 

     }, 
     error: function(data) { 
      console.log('error'); 
     } 
    }); 
});