数据源:
[ { nodeId: "8d6d70cb44ea4172b4c6a3ab760330ea", node: { powerId: "8d6d70cb44ea4172b4c6a3ab760330ea", parentId: "0", orderIndex: 4, resourceType: "MENU", resourceName: "项目管理", level: null, resourceDesc: "", resourceUrl: "/projectManage", resourceIcon: "iconfont icon-xiangmu", moduleId: "ea3f471cc286450b8329e86e90fe24dc", isDeleted: false, createTime: "2020-06-22 18:45:26", updateTime: "2020-06-22 18:52:36", }, parentId: "0", children: null, childLeaf: true, }, { nodeId: "6088a9af2f514e5090ccbd51110424b5", node: { powerId: "6088a9af2f514e5090ccbd51110424b5", parentId: "0", orderIndex: 6, resourceType: "MENU", resourceName: "资料汇总", level: null, resourceDesc: "", resourceUrl: "/dataCollection", resourceIcon: "iconfont icon-ziliao", moduleId: "5ecf31302dff488f84620d5b816d98ee", isDeleted: false, createTime: "2020-06-22 18:45:26", updateTime: "2020-06-22 18:52:56", }, parentId: "0", children: null, childLeaf: true, }, { nodeId: "8621da3397374510a17b59ad9cfdca74", node: { powerId: "8621da3397374510a17b59ad9cfdca74", parentId: "0", orderIndex: 9, resourceType: "MENU", resourceName: "个人中心", level: null, resourceDesc: "", resourceUrl: "/personalCenter", resourceIcon: "iconfont icon-yonghu1", moduleId: "242026239a9e40879915867307364365", isDeleted: false, createTime: "2020-06-22 18:45:26", updateTime: "2020-06-22 18:53:19", }, parentId: "0", children: null, childLeaf: true, }, { nodeId: "1b4c695c711640949872510e02752b69", node: { powerId: "1b4c695c711640949872510e02752b69", parentId: "0", orderIndex: 52, resourceType: "MENU", resourceName: "伦理会议", level: null, resourceDesc: "", resourceUrl: "/ethicalMeeting", resourceIcon: "", moduleId: "52ad856eb1a84fbbb6f31ba59f93aba4", isDeleted: false, createTime: "2020-06-22 18:45:26", updateTime: "2020-06-22 18:45:26", }, parentId: "0", children: [ { nodeId: "79234bc38316477680a555f3db4a00dd", node: { powerId: "79234bc38316477680a555f3db4a00dd", parentId: "1b4c695c711640949872510e02752b69", orderIndex: 1, resourceType: "MENU", resourceName: "待会审项目", level: null, resourceDesc: "", resourceUrl: "/ethicalMeeting/pendingReviewProject'", resourceIcon: "", moduleId: "52ad856eb1a84fbbb6f31ba59f93aba4", isDeleted: false, createTime: "2020-06-22 18:45:26", updateTime: "2020-06-22 18:45:26", }, parentId: "1b4c695c711640949872510e02752b69", children: null, childLeaf: true, }, { nodeId: "5f38c08e24a64ba0bb9b3ee53f192eb2", node: { powerId: "5f38c08e24a64ba0bb9b3ee53f192eb2", parentId: "1b4c695c711640949872510e02752b69", orderIndex: 2, resourceType: "MENU", resourceName: "会议记录", level: null, resourceDesc: "", resourceUrl: "/ethicalMeeting/pendingReviewProject", resourceIcon: "", moduleId: "52ad856eb1a84fbbb6f31ba59f93aba4", isDeleted: false, createTime: "2020-06-22 18:45:26", updateTime: "2020-06-22 18:45:26", }, parentId: "1b4c695c711640949872510e02752b69", children: null, childLeaf: true, }, ], childLeaf: false, }, { nodeId: "a8a55825d32f43fb8dac59bf3aeef0e3", node: { powerId: "a8a55825d32f43fb8dac59bf3aeef0e3", parentId: "0", orderIndex: 82, resourceType: "MENU", resourceName: "用户管理", level: null, resourceDesc: "", resourceUrl: "/userManage", resourceIcon: "iconfont icon-yonghuguanli", moduleId: "dc6804f659974d16bf5a498eceb65a25", isDeleted: false, createTime: "2020-06-22 18:45:26", updateTime: "2020-06-22 18:45:26", }, parentId: "0", children: [ { nodeId: "fdb9c937156148cc88060450933e2d72", node: { powerId: "fdb9c937156148cc88060450933e2d72", parentId: "a8a55825d32f43fb8dac59bf3aeef0e3", orderIndex: 1, resourceType: "MENU", resourceName: "本院用户", level: null, resourceDesc: "", resourceUrl: "/userManage/ourHospitalUser", resourceIcon: "", moduleId: "dc6804f659974d16bf5a498eceb65a25", isDeleted: false, createTime: "2020-06-22 18:45:26", updateTime: "2020-06-22 18:45:26", }, parentId: "a8a55825d32f43fb8dac59bf3aeef0e3", children: null, childLeaf: true, }, ], childLeaf: false, } ]
需要的结果格式:
[ { path: "/ethicsWorkbench", text: "伦理工作台", icon: "iconfont icon-yingyong1", children: [ { path: "/ethicsWorkbench/chiefJudge", text: "审查任务(主审)", }, { path: "/ethicsWorkbench/secretary", text: "审查任务(秘书)", }, { path: "/ethicsWorkbench/director", text: "审查任务(主任)", }, ], }, { path: "/userManage", text: "用户管理", icon: "iconfont icon-yonghuguanli", children: [ { path: "/userManage/ourHospitalUser", text: "本院用户", }, { path: "/userManage/sponsorUser", text: "申办方用户", }, ], }, { path: "/personalCenter", text: "个人中心", icon: "iconfont icon-yonghu1", } ]
递归:
function fn(data, result = []) { result = data.map((item) => { if (item.children) item.children = fn(item.children, []); return { path: item.node.resourceUrl, text: item.node.resourceName, icon: item.node.resourceIcon, children: item.children || [], }; }); return result; }
结果: