Skip to main content

数组转树

// 原始数据如下:
let source = [
{id: 0, name: '部门一', parentId: null},
{id: 1, name: '部门二', parentId: 0},
{id: 2, name: '部门三', parentId: 1},
{id: 3, name: '部门四', parentId: 2},
{id: 4, name: '部门五', parentId: 2}
]
// 输出

let result = {
id: 0,
name: '部门一',
children: [
{
id: 1,
name: '部门二',
childern: [
{
id: 2,
name: '部门三',
childern: [
{
id: 3,
name: '部门四',
childern: []
},
{
id: 4,
name: '部门五',
childern: []
}
]
}
]
}
]
}

方法一:forEach找儿子法

function findChid(arr) {
arr.forEach(item => {
item.childern = arr.filter(subItem => subItem.parentId === item.id)
})
return arr.find(item => item.parentId === null)
}

方法二: forEach找爹法

function findParent(arr) {
let result;
arr.forEach(item => {
let p = arr.find(subItem => subItem.id === item.parentId);
if (p) {
if (p.children) {
p.children.push(item);
} else {
p.children = [];
p.children.push(item);
}
} else {
result = item;
}
})
return result;
}