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]);
};
質問を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);
}
$.each()
を使用します。
次のようになります。
$.each(data, function(n, elem) {
// here you process your data to data loaded to lines
});
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); });