【问题标题】:Javascript: traversing 2 level deep array with "for" doesn't produce another arrayJavascript:使用“for”遍历 2 级深度数组不会产生另一个数组
【发布时间】:2009-12-23 16:52:32
【问题描述】:

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

要使用我的结构示例:

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) {
...
}

"item" 不包含应有的数组。它包含一个等于子数组键的字符串。在这种情况下是“0”

我在这里错过了什么? :(

感谢您的帮助!

【问题讨论】:

  • 顺便说一句,您的示例结构真的很难阅读。您只需要说“数组数组”或“嵌套数组”就很清楚了。

标签: javascript object traversal


【解决方案1】:

您已经说过问题出在哪里:“item”不包含数组...它包含一个等于子数组键的字符串。所以,你只需要使用那个键:

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

【讨论】:

猜你喜欢
  • 2021-08-07
  • 2020-08-25
  • 1970-01-01
  • 2021-09-30
  • 2015-05-22
  • 2018-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多