web-dev-qa-db-ja.com

jQueryでこのJSONオブジェクトを反復処理するにはどうすればよいですか?

PHPで生成されたJSONオブジェクトがあります。日付のセットを持つオブジェクトです。これには、timeStampがあり、次にフォーマットされた日付があります。 jQueryでこれをどのように反復しますか?

{
  "dates":[
    {
      "timeStamp": 1317596400,
      "formattedDate": "Mon 03 October 2011"
    },
    {
      "timeStamp": 1317682800,
      "formattedDate": "Tue 04 October 2011"
    },
    {
      "timeStamp": 1317855600,
      "formattedDate": "Thu 06 October 2011"
    }
  ]
}

私はもう試した:

for (var i in data) { 
  alert(data.dates[i].timeStamp); 
};

for (var i in data) { 
  alert(data[i].dates.timeStamp); 
};

そして

for (var i in data) { 
  alert(data.dates.timeStamp[i]); 
};
37
Johnathan Au

質問をjqueryとしてタグ付けしたため、 $.each それはjqueryのイテレータ関数だからです:

$.each(data.dates, function(index, element) {
    alert(element.timeStamp); 
});

for in 構文(試してみました)、解決策は次のとおりです。

for(var key in data.dates) {
     alert(data.dates[key].timeStamp); 
} 

ただし、for in構文は、あなたが思っている以上のことをするかもしれません:プロトタイプから継承されたプロパティも繰り返し処理するので、オブジェクトインスタンスプロパティのみを繰り返し処理するのが便利かもしれません:

for(var key in data.dates) {
    // if it's not something from the prototype
    if(data.dates.hasOwnProperty(key)) {
        alert(data.dates[key].timeStamp); 
    }
} 

update
別のエレガントな方法は、 Object.keys ターゲットオブジェクトのすべてのキーを含む配列を返し、オブジェクトのすべてのプロパティを反復処理するメソッド:

for(var i=0, keys=Object.keys(data.dates), l=keys.length; i<l; i++) {
    alert(data.dates[i].timeStamp);
} 
74
gion_13

$.each() を使用します。
次のようになります。

$.each(data, function(n, elem) {
    // here you process your data to data loaded to lines               
});
3
mfadel

jQuery each を使用して、単純にjson構造を反復処理できます。

$.each(data, function(index, element) {
   alert(element.dates.timeStamp); 
});

jQuery.each()がおそらく最も簡単な方法です。これを確認してください: http://api.jquery.com/jQuery.each/

例えば

$.each(dates, function(index, date) { alert(date.timeStamp); });
0
Mike Simmons