如何将一维数组转化为树状数组
const arr =[
{ id: 1, name: 'i1' },
{ id: 2, name: 'i2', parentId: 1 },
{ id: 4, name: 'i4', parentId: 3 },
{ id: 3, name: 'i3', parentId: 2 },
{ id: 8, name: 'i8', parentId: 7 },
]
const buildArr =(arr,parentId) =>{
// 先定义个存放处理完数据的数组
let tree =[]
// 使用for循环递归处理
for(let i =0; i< arr.length; i++) {
// 这里可以用来判断parentId是否存在,不存在则为顶级节点,存在则为子节点
if(arr[i].parentId === parentId || !arr[i].parentId && !parentId){
let node = { ...arr[i] }
let children = buildArr(arr,arr[i].id)
// 如果需要children为空时不赋值,可以增加一个判断条件
if(children.length > 0){
node.children =children
}
}
return tree.push(node)
}