如何在jQuery中遍历此JSON对象?

时间:2012-03-27 09:43:56

标签: jquery json object loops

我有一个由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]); 
};

4 个答案:

答案 0 :(得分:71)

由于您将问题标记为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); 
    }
} 

<强>更新
另一种优雅的方法是使用Object.keys方法返回一个包含目标对象中所有键的数组,以迭代所有对象的属性:

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

答案 1 :(得分:3)

您使用$.each() 它看起来像这样:

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

答案 2 :(得分:2)

您可以使用jQuery each简单地遍历json结构:

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

答案 3 :(得分:0)

jQuery.each()可能是最简单的方法,请查看:http://api.jquery.com/jQuery.each/

例如

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