数据转为树形数据deepTree

遍历的函数方法

export function deeTree(list: any) {
    const result: any = []; // 最终解构结果
    // map映射
    const map: any = {};
    for (let item of list) {
        // 把每个id作为属性名,item为属性值,组成map对象
        // 1:{id:1 .....} 2:{id:2 .....}
        map[item.id] = item;
    }
    for (let item of list) {
        // item.parentId可以决定是谁的子级,没有parentId的就是一级,直接加result    
        if (!item.parentId) {
            // 一级直接push到result中
            // 第一次遍历结束  map中已经有  1:{id:1 .....}  2:{id:2 .....} ...
            // TODO result.push(map[item.id]是等于item的);
            result.push(map[item.id]);
        } else {
            //    有parentId的(子级)需要找父级
            // map中的数据子级对应的父级--如果父级有children可以直接添加到children数组中
            // 就是中map中 1:{id:1 .....}  2:{id:2 .....} ... map[item.parentId]是这一项的父级id它的父级在map中数据
            if (map[item.parentId].children) {
                // map[item.id]把子集在map中的映射添加到父级在map中的映射,就合并了
                map[item.parentId].children.push(map[item.id])
            } else {
                // 如果父级没有children , 在map中对应数据没有children的添加一个children数组
                map[item.parentId].children = [map[item.id]];
            }
        }
    }
    return result;
}

遍历的数据(部分)

export default [
  {
    id: 252,
    createTime: "2023-02-15 15:15:02",
    updateTime: "2023-02-15 15:15:02",
    parentId: "250",
    name: "删除",
    router: null,
    perms: "cloud:func:info:delete",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 101,
    createTime: "2021-01-12 14:14:51",
    updateTime: "2021-01-12 14:14:51",
    parentId: "97",
    name: "查询",
    router: null,
    perms: "base:sys:user:page,base:sys:user:list,base:sys:user:info",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 256,
    createTime: "2023-02-15 15:15:02",
    updateTime: "2023-02-15 15:15:02",
    parentId: "250",
    name: "分页查询",
    router: null,
    perms: "cloud:func:info:page",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 255,
    createTime: "2023-02-15 15:15:02",
    updateTime: "2023-02-15 15:15:02",
    parentId: "250",
    name: "列表查询",
    router: null,
    perms: "cloud:func:info:list",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 118,
    createTime: "2021-03-05 10:59:42",
    updateTime: "2023-02-14 14:05:48",
    parentId: "117",
    name: "任务列表",
    router: "/task/list",
    perms: null,
    type: 1,
    icon: "icon-menu",
    orderNum: 0,
    viewPath: "modules/task/views/list.vue",
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 119,
    createTime: "2021-03-05 11:00:00",
    updateTime: "2021-03-05 11:00:00",
    parentId: "118",
    name: "权限",
    router: null,
    perms:
      "task:info:page,task:info:list,task:info:info,task:info:add,task:info:delete,task:info:update,task:info:stop,task:info:start,task:info:once,task:info:log",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 254,
    createTime: "2023-02-15 15:15:02",
    updateTime: "2023-02-15 15:15:02",
    parentId: "250",
    name: "单个信息",
    router: null,
    perms: "cloud:func:info:info",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 253,
    createTime: "2023-02-15 15:15:02",
    updateTime: "2023-02-15 15:15:02",
    parentId: "250",
    name: "修改",
    router: null,
    perms: "cloud:func:info:update,cloud:func:info:info",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 199,
    createTime: "2022-07-05 16:08:50",
    updateTime: "2022-07-05 16:08:50",
    parentId: "198",
    name: "删除",
    router: null,
    perms: "dict:info:delete",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 200,
    createTime: "2022-07-05 16:08:50",
    updateTime: "2022-07-05 16:08:50",
    parentId: "198",
    name: "修改",
    router: null,
    perms: "dict:info:update,dict:info:info",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 201,
    createTime: "2022-07-05 16:08:50",
    updateTime: "2022-07-05 16:08:50",
    parentId: "198",
    name: "获得字典数据",
    router: null,
    perms: "dict:info:data",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 202,
    createTime: "2022-07-05 16:08:50",
    updateTime: "2022-07-05 16:08:50",
    parentId: "198",
    name: "单个信息",
    router: null,
    perms: "dict:info:info",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 203,
    createTime: "2022-07-05 16:08:50",
    updateTime: "2022-07-05 16:08:50",
    parentId: "198",
    name: "列表查询",
    router: null,
    perms: "dict:info:list",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 204,
    createTime: "2022-07-05 16:08:51",
    updateTime: "2022-07-05 16:08:51",
    parentId: "198",
    name: "分页查询",
    router: null,
    perms: "dict:info:page",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 205,
    createTime: "2022-07-05 16:08:51",
    updateTime: "2022-07-05 16:08:51",
    parentId: "198",
    name: "新增",
    router: null,
    perms: "dict:info:add",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 206,
    createTime: "2022-07-06 10:41:26",
    updateTime: "2022-07-06 10:41:37",
    parentId: "198",
    name: "组权限",
    router: null,
    perms: "dict:type:list,dict:type:update,dict:type:delete,dict:type:add",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 100,
    createTime: "1900-01-20 14:14:33",
    updateTime: "1900-01-20 14:14:33",
    parentId: "97",
    name: "修改",
    router: null,
    perms: "base:sys:user:delete,base:sys:user:update",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 249,
    createTime: "2023-02-15 14:33:24",
    updateTime: "2023-02-15 14:33:24",
    parentId: "241",
    name: "新增",
    router: null,
    perms: "cloud:db:add",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 230,
    createTime: "2023-02-13 14:57:48",
    updateTime: "2023-02-13 14:57:48",
    parentId: "229",
    name: "恢复数据",
    router: null,
    perms: "recycle:data:restore",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 231,
    createTime: "2023-02-13 14:57:48",
    updateTime: "2023-02-13 14:57:48",
    parentId: "229",
    name: "单个信息",
    router: null,
    perms: "recycle:data:info",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 232,
    createTime: "2023-02-13 14:57:48",
    updateTime: "2023-02-13 14:57:48",
    parentId: "229",
    name: "分页查询",
    router: null,
    perms: "recycle:data:page",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 248,
    createTime: "2023-02-15 14:33:24",
    updateTime: "2023-02-15 14:33:24",
    parentId: "241",
    name: "分页查询",
    router: null,
    perms: "cloud:db:page",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
  {
    id: 247,
    createTime: "2023-02-15 14:33:24",
    updateTime: "2023-02-15 14:33:24",
    parentId: "241",
    name: "列表查询",
    router: null,
    perms: "cloud:db:list",
    type: 2,
    icon: null,
    orderNum: 0,
    viewPath: null,
    keepAlive: 1,
    isShow: 1,
  },
]
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容