百度前端技术学院 第二十二天到第二十四天:JavaScript里面的居民们
/* 思路:
每个对象的id属性也是一个对象,包含subMenu对象
保存id属性的地址至a数组中
对于menuArr数组中的每一项,根据parent的id,到a数组中找到地址,为其subMenu属性添加值
时间复杂度O(N),空间复杂度O(N)
*/
var menuArr = [
[1, "Area1", -1],
[2, "Area2", -1],
[3, "Area1-1", 1],
[4, "Area1-2", 1],
[5, "Area2-1", 2],
[6, "Area2-2", 2],
[7, "Area1-2-3", 4],
[8, "Area2-2-1", 6],
];
function menuArrToObj(arr){
var obj={};
var a=[]; // 该数组保存每个菜单的地址
for(var i=0;i<arr.length;i++){
id=arr[i][0];
name=arr[i][1];
parent=arr[i][2];
if(parent>0){
if(!a[parent-1]["subMenu"]){
a[parent-1]["subMenu"]={};
}
a[parent-1]["subMenu"][id]={};
a[parent-1]["subMenu"][id]["name"]=name;
a[i]=a[parent-1]["subMenu"][id];
}else{ // 第三个值等于-1
obj[id]={};
obj[id]["name"]=name;
a[i]=obj[id];
}
}
console.log(a);
return obj;
}
console.log(menuArrToObj(menuArr));
/*
var menuObject = {
"1": {
name: "Area1",
subMenu: {
"3": {
name: "Area1-1"
},
"4": {
name: "Area1-2",
subMenu: {
"7": {
name: "Area1-2-3"
}
}
}
}
}
……
}
*/