数组转树

242 阅读2分钟

数组转树最佳代码,浅克隆引用数据类型,只需要 数组内的元素遍历两便,即可得到最终结果,可以将map data result 都打印出来理解一下

function toTree(data) {    let result = [];    if (!Array.isArray(data)) {        return result;    }    data.forEach((item) => {        delete item.children;    });    let map = {};    data.forEach((item) => {        map[item.sysAppServer] = item;    });    data.forEach((item) => {        let parent = map[item.pid];        if (parent) {        (parent.children || (parent.children = [])).push(item);        } else {        result.push(item);        }    });    return result;}

    var source = [        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 1,          appServerName: '首页',        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 10,          appServerName: '租户管理',        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 18,          appServerName: '部门管理',        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 24,          appServerName: '用户管理',        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 32,          appServerName: '角色管理',        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 3,          appServerName: '查询',          pid: 2,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 4,          appServerName: '新建',          pid: 2,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 5,          appServerName: '编辑',          pid: 2,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 6,          appServerName: '删除',          pid: 2,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 7,          appServerName: '排序',          pid: 2,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 8,          appServerName: '启用',          pid: 2,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 9,          appServerName: '停用',          pid: 2,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 11,          appServerName: '查询',          pid: 10,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 12,          appServerName: '新建',          pid: 10,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 13,          appServerName: '编辑',          pid: 10,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 14,          appServerName: '删除',          pid: 10,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 15,          appServerName: '排序',          pid: 10,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 16,          appServerName: '启用',          pid: 10,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 17,          appServerName: '停用',          pid: 10,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 17,          appServerName: '停用',          pid: 3,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 19,          appServerName: '查询',          pid: 18,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 20,          appServerName: '新建',          pid: 18,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 21,          appServerName: '编辑',          pid: 18,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 22,          appServerName: '删除',          pid: 18,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 23,          appServerName: '排序',          pid: 18,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 25,          appServerName: '查询',          pid: 24,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 26,          appServerName: '新建',          pid: 24,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 27,          appServerName: '编辑',          pid: 24,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 28,          appServerName: '删除',          pid: 24,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 29,          appServerName: '排序',          pid: 24,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 30,          appServerName: '启用',          pid: 24,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 31,          appServerName: '停用',          pid: 24,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 33,          appServerName: '查询',          pid: 32,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 34,          appServerName: '新建',          pid: 32,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 35,          appServerName: '编辑',          pid: 32,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 36,          appServerName: '删除',          pid: 32,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 37,          appServerName: '排序',          pid: 32,        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 38,          appServerName: '用户审批',        },        {          sysTenant: 1,          sysApp: 1,          sysAppServer: 2,          appServerName: '应用管理',        },      ];