美文网首页
express一维数组转树形结构

express一维数组转树形结构

作者: 一人创客 | 来源:发表于2020-07-16 13:30 被阅读0次


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))

相关文章

网友评论

      本文标题:express一维数组转树形结构

      本文链接:https://www.haomeiwen.com/subject/ewsphktx.html