let menu= {
1: {
icon: "1111",
entVersion: null,
label: "采集管理",
url: "home/home"
},
"1_1": {
icon: "1111",
entVersion: null,
label: "采集管理",
url: "1_1"
},
"1_2": {
icon: "1111",
entVersion: null,
label: "采集管理",
url: "1_2"
},
2: {
icon: "1111",
entVersion: null,
label: "市场管理",
url: "2"
},
"2_1": {
icon: "1111",
entVersion: null,
label: "市场管理",
url: "2_1"
},
"2_2": {
icon: "1111",
entVersion: null,
label: "市场管理",
url: "2_2"
}
}
转为这种类型的数据格式
let menu = {
1: {
icon: "1111",
entVersion: null,
label: "采集管理",
url: "home/home",
children: [
{
icon: "1111",
entVersion: null,
label: "采集管理",
url: "1_1"
},
{
icon: "1111",
entVersion: null,
label: "采集管理",
url: "1_2"
}
]
},
};
除了使用递归 还有更好的方法吗?
这是后端返回的数据?如果是,最好后端处理树关系
const r = new Map()
for (let menuKey in menu) {
if (menuKey.split("_").length<=1){
r.set(menuKey+"", menu[menuKey])
}
}
for (let menuKey in menu) {
let temp = menuKey.split("_")
if (temp.length>1 && r.get(temp[0])){
if (!r.get(temp[0])["children"]){
r.get(temp[0])["children"] = []
}
r.get(temp[0])["children"].push(menu[menuKey])
}
}
const obj = new Object();
r.forEach((item, key) => {
obj[key] = item
})
console.log(JSON.stringify(obj));