Javascript:使用“遍历2级深度数组”;至于;不';不能再生成一个数组

Javascript:使用“遍历2级深度数组”;至于;不';不能再生成一个数组,javascript,object,traversal,Javascript,Object,Traversal,对不起,如果我的标题很难理解。让我解释一下 要使用我的结构示例,请执行以下操作: Array ( [2] => Array ( [0] => stdClass Object ( [category_id] => 2 [category_name] => women [project_id] => 1

对不起,如果我的标题很难理解。让我解释一下

要使用我的结构示例,请执行以下操作:

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
            )

    )
一旦我有了它,我就将它发送给javascript进行评估(这是成功的)。事实上,Console.log确实显示了我的eval'd json现在实际上是一个对象

现在,如果我使用console.log(myArray[2]),它将显示为包含另一个数组的数组。这也是正确的

但是!。。如果我尝试这样做:

for (item in myArray[2]) {
...
}
或者这个:

newVar = myArray[2]
for (item in newVar) {
...
}
“项”未按其应有的方式包含数组。它包含一个等于子数组键的字符串。在本例中,哪个是“0”

我在这里错过了什么,伙计们(


感谢您的帮助!

您已经说过问题所在:“项”不包含数组…它包含一个等于子数组键的字符串。因此,您只需要使用该键:

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

如果您使用的JavaScript库可能会覆盖数组/对象原型,那么您还需要检查hasOwnProperty:Good point。此外,如果您仅为FF开发,那么有一种方法可以像您以前尝试的那样进行迭代-使用
forEach
:或
for each…in
:感谢您的帮助!现在就可以了。I st我将使用一个for循环,但我正在访问我的值列表,因此:myArray[i]['project_name']作为旁白,您的示例结构确实很难阅读。您只需要说“数组数组”或“嵌套数组”,这一点就很清楚了。