js实现-将平铺数据转换为树形结构
// 平铺数据
const list = [
{ id: 1, pid: 0, name: 'one'},
{ id: 2, pid: 1, name: 'two'},
{ id: 3, pid: 1, name: 'three'},
{ id: 4, pid: 2, name: 'four'},
]
// 以下转换
const deleteIds = []
list.forEach((i) => {
i.children = []
list.forEach((item) => {
// 判断是否有父级(有:将其push到父级的children里,且将该id推进要删除的ids里)
if (item.pid === i.id) {
i.children.push(item)
deleteIds.push(item.id)
}
})
// 如果children为空,则删除该children
if (i.children.length === 0) {
delete i.children
}
})
// 过滤在deleteIds的id
const result = list.filter(i => !deleteIds.includes(i.id))
console.log(list, result)