好吧,基本上我有我认为是JSON对象。你在我提供的图片中看到了它的属性,现在我正在尝试做的就是为每个特定的lvl写一个。
$.each(toSort.items.items.items.items.items, function (index, value) {
console.log(index);
});
所以我想要的是一个嵌套在第5层的循环,运行代码。所以我想知道为什么上面的代码无效?
答案 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]
看起来它可以用一些递归,不是吗?