jquery - 如何在 jQuery 中遍历这个 JSON 对象?

我有一个由 PHP 生成的 JSON 对象。它是一个带有一组日期的对象。它有时间戳,然后是日期的格式化版本。我将如何在 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 语法的作用可能比您想象的要多:它也会迭代从原型(prototype)继承的属性,因此确保仅在对象实例属性:

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[i].timeStamp);
} 

https://stackoverflow.com/questions/9887009/

相关文章:

javascript - 使用 Javascript 更新 JSON 对象

mysql - 错误 : Most middleware (like json) is no lon

json - JSON Schema 中的 "required"与 "optional"有什么区别

json - 返回 Mvc.JsonResult 加上设置 Response.StatusCode

c# - 无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'Sy

java - 如何解析 JSON 并将其值转换为数组?

javascript - Backbone.js 模型与集合

javascript - 如何对 Javascript 对象进行排序,或将其转换为数组?

java - 应用程序配置文件

ruby-on-rails - 我应该如何格式化对我的 rails 应用程序的 JSON POST