Javascript цикл массив - PullRequest
       1

Javascript цикл массив

1 голос
/ 17 февраля 2012

У меня есть массив javascript, написанный следующим образом ...

var json = [
    {"id":"1", "title":"Test 1", "comment":"This is the first test"},
    {"id":"2", "title":"Test 2", "comment":"This is the second test"}
];

Я пытаюсь получить каждый из идентификаторов.

Я пытался это

for(x in json[0]){
    alert(x.id);        
}

Но не повезло, кто-то может указать мне правильное направление? Пожалуйста и спасибо:)

Ответы [ 4 ]

5 голосов
/ 17 февраля 2012

x в вашем примере дает вам индексов вашего массива, а не объектов. Вы могли бы сделать:

for(x in json) {
    alert(json[x].id);        
}

но для цикла через массив вам действительно лучше использовать "обычный" цикл

for (var i = 0, max = json.length; i < max; i++) {
    alert(json[i].id);
}
4 голосов
/ 17 февраля 2012

Любой современный браузер позволит вам сделать это легко:

var ids = json.map(function(i) { return i.id; });
// and now you have an array of ids!

К сожалению, «современный» не включает IE 8 и более ранние.

Вы также можете сделать «мирское»Форма, которая гарантированно работает во всех браузерах.Я вижу, что Адам Рэкис побил меня этим, хотя я пойду и проголосую за его ответ, и вам, вероятно, следует сделать это также.

1 голос
/ 17 февраля 2012

A for(x in y) цикл в JavaScript дает вам индексы в этом массиве (например, так что x[y] дает вам текущий элемент).

Два правильных способа циклически проходить по массиву в JavaScript::

for(x = 0; x < y.length; x++) { // (this can only loop through arrays)
  // do something with y[x]
}
for(x in y) { // (this can loop through objects too)
  // do something with y[x]
}
1 голос
/ 17 февраля 2012

Это одно из возможных решений:

var json = [{"id":"1","title":"Test 1","comment":"This is the first test"},{"id":"2","title":"Test 2","comment":"This is the second test"}];

for (var i = 0, len = json.length; i < len; i++) {
    alert(json[i].id);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...