例如现在又这样的一组数据:
const data = [
{
id:2,
pid:0,
path:'/course',
name:'Course',
title:'课程管理',
},
{
id:3,
pid:2,
path:'operate',
name:'CourseOperate',
link:'/course/operate',
title:'课程操作',
},
{
id:4,
pid:3,
path:'info_data',
name:'CourseInfoData',
link:'/course/operate/info_data',
title:'课程数据',
},
{
id:5,
pid:2,
path:'add',
name:'CourseAdd',
link:'/course/add',
title:'添加课程',
},
{
id:6,
pid:0,
path:'/student',
name:'Student',
title:'学生管理',
},
{
id:7,
pid:6,
path:'operate',
name:'StudentOperate',
link:'/student/operate',
title:'学生操作',
},
{
id:8,
pid:6,
path:'add',
name:'StudentAdd',
link:'/student/add',
title:'添加学生',
},
]
根据pid和id的关系生成树形结构
方法如下:
function formatRouterTree(data) {
let parents = data.filter(p => p.pid === 0),
children = data.filter(c => c.pid !== 0);
dataToTree(parents, children)
function dataToTree(parents, children) {
parents.map((p) => {
children.map((c, i) => {
if (c.pid === p.id) {
let _c = JSON.parse(JSON.stringify(children));
_c.splice(i, 1);
dataToTree([c], _c);
if (p.children) {
p.children.push(c);
} else {
p.children = [c]
}
}
})
})
}
return parents;
}