Joh*_* Au 38 jquery json loops object
我有一个由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"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我试过了:
for (var i in data) {
alert(data.dates[i].timeStamp);
};
for (var i in data) {
alert(data[i].dates.timeStamp);
};
Run Code Online (Sandbox Code Playgroud)
和
for (var i in data) {
alert(data.dates.timeStamp[i]);
};
Run Code Online (Sandbox Code Playgroud)
gio*_*_13 74
由于您将问题标记为jquery一个,因此您应该使用$.each它,因为它是jquery的迭代器函数:
$.each(data.dates, function(index, element) {
alert(element.timeStamp);
});
Run Code Online (Sandbox Code Playgroud)
如果你想坚持for in语法(我看到你已经尝试过),解决方案可能是:
for(var key in data.dates) {
alert(data.dates[key].timeStamp);
}
Run Code Online (Sandbox Code Playgroud)
但要注意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);
}
}
Run Code Online (Sandbox Code Playgroud)
更新
另一种优雅的方法是使用Object.keys返回包含目标对象中所有键的数组的方法来迭代所有对象的属性:
for(var i=0, keys=Object.keys(data.dates), l=keys.length; i<l; i++) {
alert(data.dates[i].timeStamp);
}
Run Code Online (Sandbox Code Playgroud)