为嵌套的json

时间:2015-09-04 14:31:51

标签: javascript jquery json object foreach

this is what my variable looks like in the debugger

好吧,基本上我有我认为是JSON对象。你在我提供的图片中看到了它的属性,现在我正在尝试做的就是为每个特定的lvl写一个。

$.each(toSort.items.items.items.items.items, function (index, value) {
    console.log(index);
});

所以我想要的是一个嵌套在第5层的循环,运行代码。所以我想知道为什么上面的代码无效?

2 个答案:

答案 0 :(得分:2)

因为items总是一个数组,所以你必须引用这个数组中的某个索引。如果您想获得一个项目,您也必须使用索引。

toSort[0].items[0].items[0] //third level

如果您想要来自该阵列的所有值,最好使用多个循环。此外,for()比jQuery的each()快得多。

for(var i = 0; i < toSort i++){
    //first level
    for(var j=0; j < toSort[i].items; j++){
        //second level
        for(var x=0; x < toSort[i].items[j].items; x++){
           //third level
        }
    }
}

答案 1 :(得分:1)

项目也是第5层之前的每一层中的数组,因此要访问第一层内的items数组,需要指定索引,通过执行toSort.items.items,第二项作为属性进行beign访问,不存在,要访问第一个项目数组中的第二个项目数组,您必须以toSort.items [0] .items等方式访问它。

后续访问的示例可能是

toSort.items[0].items[0].items[0].items[0].items[0]
toSort.items[0].items[0].items[0].items[0].items[1]
toSort.items[0].items[0].items[0].items[0].items[2]
...
toSort.items[0].items[0].items[0].items[1].items[0]
toSort.items[0].items[0].items[0].items[1].items[1]
toSort.items[0].items[0].items[0].items[1].items[2]
...
...
...
toSort.items[1].items[1].items[1].items[1].items[0]
toSort.items[1].items[1].items[1].items[1].items[1]
toSort.items[1].items[1].items[1].items[1].items[2]

看起来它可以用一些递归,不是吗?