let menuList = [
{
id: 1,
pid: -1,
name: '江西'
},
{
id: 2,
pid: 1,
name: '南昌'
},
{
id: 3,
pid: 1,
name: '九江'
},
{
id: 4,
pid: -1,
name: '广东'
},
{
id: 5,
pid: 4,
name: '深圳'
},
{
id: 6,
pid: 5,
name: '南山'
}
]
function getMenuList(list) {
let menu = []
let map = {}
list.forEach(item => {
item.children = []
map[item.id] = item
if (item.pid === -1) {
menu.push(item)
} else {
map[item.pid] && map[item.pid].children.push(item)
}
})
return menu
}
let data = getMenuList(menuList)
利用了 对象在内存中的保存方式是 指针引用,实现了简单的生成菜单树的算法。