遍历的函数方法
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,
},
]