我有一个由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(var key in data.dates) { // if it's not something from the prototype if(data.dates.hasOwnProperty(key)) { alert(data.dates[key].timeStamp); } }
更新
另一个优雅的方法是使用Object.keys
方法返回一个包含目标对象中所有键的数组,以迭代所有对象的属性:
for(var i=0,keys=Object.keys(data.dates),l=keys.length; i<l; i++) { alert(data.dates[key].timeStamp); }