扁平化数据转tree
写法一:
let arr = [
{ id: 1, name: '部门1', pid: 0 },
{ id: 2, name: '部门2', pid: 1 },
{ id: 3, name: '部门3', pid: 1 },
{ id: 6, name: '部门3', pid: 2 },
{ id: 7, name: '部门3', pid: 4 },
{ id: 8, name: '部门3', pid: 4 },
{ id: 9, name: '部门3', pid: 5 },
{ id: 10, name: '部门3', pid: 0 },
{ id: 4, name: '部门4', pid: 3 },
{ id: 5, name: '部门5', pid: 4 },
];
function fn3(arr1, arr2) {
for (let t = 0; t < arr1.length; t++) {
for (let t2 = 0; t2 < arr2.length; t2++) {
if (arr1[t].id == arr2[t2].pid) {
if (!arr1[t].children) {
arr1[t].children = [];
}
arr2[t2].isTreeChildren = true;
arr1[t].children.push(arr2[t2]);
}
}
}
return fn31(arrFilter);
function fn31(arrFilter) {
return arrFilter.filter((v, i, arrs) => {
if (v.isTreeChildren) {
delete v.isTreeChildren;
return false;
} else {
delete v.isTreeChildren;
return true;
}
});
}
}
console.log(fn3(arr, arr));
结果:
let strJson = [
{
id: 1,
name: '部门1',
pid: 0,
children: [
{ id: 2, name: '部门2', pid: 1, children: [{ id: 6, name: '部门3', pid: 2 }] },
{
id: 3,
name: '部门3',
pid: 1,
children: [
{
id: 4,
name: '部门4',
pid: 3,
children: [
{ id: 7, name: '部门3', pid: 4 },
{ id: 8, name: '部门3', pid: 4 },
{ id: 5, name: '部门5', pid: 4, children: [{ id: 9, name: '部门3', pid: 5 }] },
],
},
],
},
],
},
{ id: 10, name: '部门3', pid: 0 },
];