Подтвердить что ты не робот

Как выполнить итерацию через этот объект JSON в jQuery?

У меня есть объект JSON, который генерируется PHP. Это объект с набором дат. У этого есть 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]); 
};
4b9b3361

Ответ 1

Поскольку вы отметили свой вопрос как 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 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);
} 

Ответ 2

Вы используете $.each().
Это выглядит так:

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

Ответ 3

jQuery.each(), вероятно, самый простой способ, проверьте это: http://api.jquery.com/jQuery.each/

eg

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

Ответ 4

Вы можете просто перебирать json-структуру, используя jQuery каждый:

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