Javascript: обход 2-уровневого массива с «for» не создает другой массив - PullRequest
2 голосов
/ 23 декабря 2009

Извините, если мой заголовок трудно понять. Позвольте мне объяснить.

Чтобы использовать этот пример моей структуры:

Array
(
[2] => Array
    (
        [0] => stdClass Object
            (
                [category_id] => 2
                [category_name] => women
                [project_id] => 1
                [project_name] => Balloons
            )

    )

[1] => Array
    (
        [0] => stdClass Object
            (
                [category_id] => 1
                [category_name] => men
                [project_id] => 2
                [project_name] => Cars
            )

        [1] => stdClass Object
            (
                [category_id] => 1
                [category_name] => men
                [project_id] => 3
                [project_name] => Houses
            )

    )

Затем, когда у меня есть это, я отправляю его на eval'd с помощью javascript (что успешно). Console.log действительно показывает, что мой eval'd json теперь фактически является объектом.

Теперь, если я console.log (myArray [2]), он будет показан как массив, содержащий другой массив. Что тоже правильно

НО! .. если я попытаюсь сделать это:

for (item in myArray[2]) {
...
}

или это:

newVar = myArray[2]
for (item in newVar) {
...
}

«элемент» не содержит массив, как следует. он содержит строку, равную ключу подмассива. Который в данном случае равен «0»

Что мне здесь не хватает, ребята? (

Спасибо за помощь!

1 Ответ

3 голосов
/ 23 декабря 2009

Вы уже сказали, в чем проблема: "item" не содержит массив ... он содержит строку, равную ключу подмассива. Итак, вам просто нужно использовать этот ключ:

var subarray;
for (var i in myArray) {
    subarray = myArray[i];
    for (var j in subarray) {
        ... // do stuff with subarray[j]
    }
}
...