如何遍历多维 javascript 对象数组
How to iterate through multidimensional javascript array of objects
想咨询一些关于javascript循环的资料。我有一个对象看起来像:
[
{
"pageId": "1",
"menuPos": "Parent",
"mainPageId": "1",
"subMenu": [
{
"pageId": "1",
"menuPos": "Parent and child",
"mainPageId": "1",
"subMenu": [
{
"pageId": "67",
"menuPos": "Child",
"mainPageId": "67"
},
{
"pageId": "68",
"menuPos": "Child and paren",
"mainPageId": "68",
"subMenu": [
{
"pageId": "70",
"menuPos": "Child",
"mainPageId": "70"
},
{
"pageId": "69",
"menuPos": "Child",
"mainPageId": "69"
}
]
}
]
}
]
}
]
我试过使用 "key in array" 但使用这个我只能到达数组的第一层。问题是我不知道这个数组中会有多少层。
我想将此数组中的一些信息赋给一个新的数组对象,并将其发送到服务器。
它必须看起来像这样。
[
{
"pageId": "1",
"menuPos": "Parent",
"subMenu": [
{
"pageId": "1",
"menuPos": "Parent and child",
"parentId":1,
"subMenu": [
{
"pageId": "67",
"menuPos": "Child",
"parentId": 1,
},
{
"pageId": "68",
"menuPos": "Parent and child",
"parentId": 1,
"subMenu": [
{
"pageId": "70",
"menuPos": "Child",
"parentId": 68,
},
{
"pageId": "69",
"menuPos": "Child",
"parentId": 68,
}
]
}
]
}
]
}
]
你可以使用递归函数,只对对象使用key in
语法,数组是标准循环:
function iterateMenus(menu) {
for (var i = 0; i < menu.length; i++) {
console.log(menu[i].pageId); //log more if ya want
if (menu[i].hasOwnProperty("subMenu") && typeof menu[i].subMenu === "object") {
iterateMenus(menu[i].subMenu);
}
}
}
想咨询一些关于javascript循环的资料。我有一个对象看起来像:
[
{
"pageId": "1",
"menuPos": "Parent",
"mainPageId": "1",
"subMenu": [
{
"pageId": "1",
"menuPos": "Parent and child",
"mainPageId": "1",
"subMenu": [
{
"pageId": "67",
"menuPos": "Child",
"mainPageId": "67"
},
{
"pageId": "68",
"menuPos": "Child and paren",
"mainPageId": "68",
"subMenu": [
{
"pageId": "70",
"menuPos": "Child",
"mainPageId": "70"
},
{
"pageId": "69",
"menuPos": "Child",
"mainPageId": "69"
}
]
}
]
}
]
}
]
我试过使用 "key in array" 但使用这个我只能到达数组的第一层。问题是我不知道这个数组中会有多少层。
我想将此数组中的一些信息赋给一个新的数组对象,并将其发送到服务器。
它必须看起来像这样。
[
{
"pageId": "1",
"menuPos": "Parent",
"subMenu": [
{
"pageId": "1",
"menuPos": "Parent and child",
"parentId":1,
"subMenu": [
{
"pageId": "67",
"menuPos": "Child",
"parentId": 1,
},
{
"pageId": "68",
"menuPos": "Parent and child",
"parentId": 1,
"subMenu": [
{
"pageId": "70",
"menuPos": "Child",
"parentId": 68,
},
{
"pageId": "69",
"menuPos": "Child",
"parentId": 68,
}
]
}
]
}
]
}
]
你可以使用递归函数,只对对象使用key in
语法,数组是标准循环:
function iterateMenus(menu) {
for (var i = 0; i < menu.length; i++) {
console.log(menu[i].pageId); //log more if ya want
if (menu[i].hasOwnProperty("subMenu") && typeof menu[i].subMenu === "object") {
iterateMenus(menu[i].subMenu);
}
}
}