我有一个JSON元素:
json = [
{
"category": "Electronic",
"param": "param1",
"subMenu": [
{
"subCategory": "Audio & Hifi",
"param": "param1-1",
"subMenu2": [
{
"type": "JVC",
"param": "param1-1-1"
},
{
"type": "Kennwood",
"param": "param1-1-2"
},
{
"type": "Sony",
"param": "param1-1-3"
},
{
"type": "Blaupunkt",
"param": "param1-1-4"
}
]
}]}]
并且想要检索subArray subMenu和subMenu2的长度以在函数中实现它。我还没有找到准确的解决方案。
for (var i = 0; i < array.length; i++)
和for (var i = 0; i < subMenu.length; i++)
的方法无法正常工作。长度受顶部阵列长度的限制。
查看实际操作:https://jsfiddle.net/pp4t9nw2/4/
有没有人知道如何解决这个问题?
答案 0 :(得分:3)
您应该在子菜单中使用不同的变量进行循环,例如:
for (var i = 0; i < json.length; i++) {
for (var j = 0; j < json[i].subMenu.length; j++) {
for (var k = 0; k < json[i].subMenu[j].subMenu2.length; k++) {
let item = json[i].subMenu[j].subMenu2[k];
// item.type available
}
}
}
答案 1 :(得分:0)
我不知道你在这之后会发生什么,但是如果你想知道顶级subMenu中有多少元素,那么json [0] .subMenu.length就可以了。
你可以遍历json(注意你已经将它称为json,而不是代码建议的数组),然后对于那里的每个元素,你可以得到json [iterator] .subMenu.length
如果你想循环遍历subMenu2,你需要第二个循环,但要确保使用不同的迭代器变量。
答案 2 :(得分:-2)
在此示例中,您需要对proMenu2进行检测。 例如: json.subMenu.subMenu2.length
但是subMenu确实没有长度,因为只有subMenu2在其中。
希望我能提供帮助。