百度前端技術學院 第二十二天到第二十四天: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"
}
}
}
}
}
……
}
*/