Я пытаюсь перебрать следующий массив json:
{
"id": "1",
"msg": "hi",
"tid": "2013-05-05 23:35",
"fromWho": "hello1@email.se"
}, {
"id": "2",
"msg": "there",
"tid": "2013-05-05 23:45",
"fromWho": "hello2@email.se"
}
И попробовал следующее
for (var key in data) {
if (data.hasOwnProperty(key)) {
console.log(data[key].id);
}
}
Но по какой-то причине я получаю только первую часть, значения id 1.
Любые идеи?
javascript
json
Alosyius
источник
источник
Ответы:
Ваш JSON должен выглядеть так:
Вы можете зациклить массив таким образом:
Или вот так (предложено Эриком) будьте осторожны с поддержкой IE
источник
json.forEach(function(obj) { console.log(obj.id); });
В вашем коде есть несколько проблем, сначала ваш json должен выглядеть так:
Далее вы можете выполнить итерацию следующим образом:
И это дает прекрасный результат.
Смотрите скрипку здесь: http://jsfiddle.net/zrSmp/
источник
Метод forEach для легкой реализации.
источник
попробуй это
источник
Так как я уже начал изучать это:
И эта функция
Вы можете назвать это так
Обновление после комментария Erics
Как Эриком отметил цикл для массива может привести к неожиданным результатам . В упомянутом вопросе долго обсуждаются плюсы и минусы.
for in
Проверить с помощью for (var i ...
Но похоже, что следующее вполне спасло:
Хотя тест в Chrome имел следующий результат
Тест с
.forEach()
По крайней мере, в Chrome 30 это работает как ожидалось
связи
for in
на мднfor in
меньше плохогоисточник
for ... in
циклы не должны использоваться для массивовfor each
.for ... in ...
является языковой конструкцией для перечисления ключей объекта в произвольном порядке. Это неправильная конструкция для массива.Это работает. Я просто добавил квадратные скобки к данным JSON. Данные:
И цикл такой:
источник
Это должен быть массив, если вы хотите перебрать его. Вы очень вероятно , отсутствует
[
и]
.Проверьте это jsfiddle: http://jsfiddle.net/lpiepiora/kN7yZ/
источник
Немного поздно, но я надеюсь, что могу помочь другим: D
Ваш JSON должен выглядеть так, как уже сказал Никлас. И тогда вы идете:
если у вас есть многомерный массив, это ваш код:
источник
Ну, все, что я могу видеть, это то, что у вас есть два объекта JSON, разделенных запятой. Если бы они оба были внутри array (
[...]
), это имело бы больше смысла.И, если они находятся внутри массива, то вы бы просто использовали стандартный цикл «для var i = 0 ...». На самом деле, я думаю, что он попытается получить свойство «id» для строки «1», затем «id» для «hi» и так далее.
источник
Краткое решение с
map
использованием функции стрелкиИ для покрытия случаев, когда собственности
"id"
нет, используйтеfilter
:источник
о боже ... почему все делают это так сложно !!?
Ваш фрагмент данных должен быть немного расширен, и это должно быть так, чтобы быть правильным JSON. обратите внимание, я просто включаю атрибут имени массива "элемент"
ваш сценарий Java просто
источник