let arr = [
{
id: 1,
name: "父类1",
pid: 0
},
{
id: 2,
name: "父类2",
pid: 0
},
{
id: 3,
name: "父类3",
pid: 0
},
{
id: 4,
name: "子类1-1",
pid: 1
},
{
id: 5,
name: "子类1-2",
pid: 1
},
{
id: 6,
name: "子类1-1-1",
pid: 4
},
{
id: 6,
name: "子类1-1-2",
pid: 4
},
{
id: 8,
name: "子类1-1-2-1",
pid: 6
},
{
id: 7,
name: "子类2-1",
pid: 2
}
];
将arr排序为父子关系;父级id等于子集Pid
function digui(arr, pid) {
arr.forEach((v, i) => {
let child = [];
if (v.pid == 0) {
a.push(v);
} else {
let index = arr.findIndex(item1 => item1.id === v.pid);
if (index !== -1) {
arr[index].child = arr[index].child || [];
arr[index].child.push(v);
}
}
});
return arr.filter(item => item.pid == 0);
}
let result = [];
routerRules.forEach((v, i) => {
v.lable = v.meta.title;
delete v.meta.title;
i += 1;
v.id = i;
result.push(v);
if (v.hasOwnProperty("children")) {
findChild(v.children, i);
// f2(v.children, i);
}
});
function findChild(arr, i) {
if (Object.prototype.toString.call(arr) == "[object Array]") {
let key = 1;
for (const iterator of arr) {
if (Object.prototype.toString.call(iterator) == "[object Object]") {
if (iterator.hasOwnProperty("meta")) {
iterator.label = iterator.meta.title;
iterator.id = `${i}-${key++}`;
}
delete iterator.meta;
delete iterator.path;
delete iterator.component;
if (iterator.hasOwnProperty("children")) {
findChild(iterator.children, iterator.id);
}
}
}
}
}