express一维数组转树形结构

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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一人创客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值