let menu = [
{
"id": 1,
"name": "111",
"parent": 0,
"icon": "555,,"
},
{
"id": 2,
"name": "极地测试菜单2",
"parent": 1,
"icon": "/img/002.png"
},
{
"id": 4,
"name": "555",
"parent": 2,
"icon": "88"
},
{
"id": 5,
"name": "ddd",
"parent": 2,
"icon": "555.png"
},
{
"id": 6,
"name": "666",
"parent": 4,
"icon": null
},
{
"id": 7,
"name": "777",
"parent": 5,
"icon": null
},
{
"id": 9,
"name": "8888",
"parent": 1,
"icon": null
},
{
"id": 10,
"name": "9999",
"parent": 9,
"icon": null
},
{
"id": 11,
"name": "10000",
"parent": 1,
"icon": null
}
]
function listToTree(list){
//遍历整个列表
return list.filter(cur=>{
// 获取当前节点的子节点
let children= list.filter(item=> item.parent == cur.id );
if(children.length>0){
cur.children=children;
}
//只返回顶级节点
return cur.parent==0;
});
}
console.log(listToTree(menu));
第二种
let list = [
{
"userID": "1",
"roleName": "admin",
"id": "2",
"NAME": "菜单管理",
"parent_id": "0",
"sort": "1000",
"url": "/sys/menu.html",
"icon": "fa fa-th-list",
"perms": "svs:menu:list",
"type": "1",
"creat_time": "13/7/2020 12:47:56",
"update_time": "13/7/2020 12:47:56"
},
{
"userID": "1",
"roleName": "admin",
"id": "3",
"NAME": "角色管理",
"parent_id": "2",
"sort": "1000",
"url": "/sys/role.html",
"icon": "fa fa-key",
"perms": "svs:role:list",
"type": "1",
"creat_time": "13/7/2020 12:47:56",
"update_time": "13/7/2020 12:47:56"
},
{
"userID": "1",
"roleName": "admin",
"id": "4",
"NAME": "用户管理",
"parent_id": "2",
"sort": "1000",
"url": "/sys/user.html",
"icon": "fa fa-user",
"perms": "svs:user:list",
"type": "1",
"creat_time": "13/7/2020 12:47:56",
"update_time": "13/7/2020 12:47:56"
},
{
"userID": "1",
"roleName": "admin",
"id": "5",
"NAME": "添加",
"parent_id": "5",
"sort": "1000",
"url": "",
"icon": "",
"perms": "sys:user:add",
"type": "2",
"creat_time": "13/7/2020 12:47:56",
"update_time": "13/7/2020 12:47:56"
},
{
"userID": "1",
"roleName": "admin",
"id": "6",
"NAME": "修改",
"parent_id": "5",
"sort": "1000",
"url": "",
"icon": "",
"perms": "sys:user:update",
"type": "2",
"creat_time": "13/7/2020 12:47:56",
"update_time": "13/7/2020 12:47:56"
},
{
"userID": "1",
"roleName": "admin",
"id": "7",
"NAME": "删除",
"parent_id": "5",
"sort": "1000",
"url": "",
"icon": "",
"perms": "sys:user:delete",
"type": "2",
"creat_time": "13/7/2020 12:47:56",
"update_time": "13/7/2020 12:47:56"
},
{
"userID": "1",
"roleName": "admin",
"id": "8",
"NAME": "授权",
"parent_id": "5",
"sort": "1000",
"url": "",
"icon": "",
"perms": "sys:user:assign",
"type": "2",
"creat_time": "13/7/2020 12:47:56",
"update_time": "13/7/2020 12:47:56"
},
{
"userID": "1",
"roleName": "admin",
"id": "9",
"NAME": "添加",
"parent_id": "3",
"sort": "1000",
"url": "",
"icon": "",
"perms": "sys:menu:add",
"type": "2",
"creat_time": "13/7/2020 12:47:56",
"update_time": "13/7/2020 12:47:56"
},
{
"userID": "1",
"roleName": "admin",
"id": "10",
"NAME": "修改",
"parent_id": "3",
"sort": "1000",
"url": "",
"icon": "",
"perms": "sys:menu:update",
"type": "2",
"creat_time": "13/7/2020 12:47:56",
"update_time": "13/7/2020 12:47:56"
},
{
"userID": "1",
"roleName": "admin",
"id": "11",
"NAME": "删除",
"parent_id": "3",
"sort": "1000",
"url": "",
"icon": "",
"perms": "sys:menu:delete",
"type": "2",
"creat_time": "13/7/2020 12:47:56",
"update_time": "13/7/2020 12:47:56"
},
{
"userID": "1",
"roleName": "admin",
"id": "12",
"NAME": "添加",
"parent_id": "4",
"sort": "1000",
"url": "",
"icon": "",
"perms": "sys:role:add",
"type": "2",
"creat_time": "13/7/2020 12:47:56",
"update_time": "13/7/2020 12:47:56"
},
{
"userID": "1",
"roleName": "admin",
"id": "13",
"NAME": "修改",
"parent_id": "4",
"sort": "1000",
"url": "",
"icon": "",
"perms": "sys:role:update",
"type": "2",
"creat_time": "13/7/2020 12:47:56",
"update_time": "13/7/2020 12:47:56"
},
{
"userID": "1",
"roleName": "admin",
"id": "14",
"NAME": "删除",
"parent_id": "4",
"sort": "1000",
"url": "",
"icon": "",
"perms": "sys:role:delete",
"type": "2",
"creat_time": "13/7/2020 12:47:56",
"update_time": "13/7/2020 12:47:56"
},
{
"userID": "1",
"roleName": "admin",
"id": "15",
"NAME": "授权",
"parent_id": "4",
"sort": "1000",
"url": "",
"icon": "",
"perms": "sys:role:assign",
"type": "2",
"creat_time": "13/7/2020 12:47:56",
"update_time": "13/7/2020 12:47:56"
}
]
function toTree(data) {
let result = []
if(!Array.isArray(data)) {
return result
}
data.forEach(item => {
delete item.children;
});
let map = {};
data.forEach(item => {
map[item.id] = item;
});
data.forEach(item => {
let parent = map[item.parent_id];
if(parent) {
(parent.children || (parent.children = [])).push(item);
} else {
result.push(item);
}
});
return result;
}
console.log(toTree(list))
网友评论