扁平数组如下图:
希望得到的树形结构效果图如下:
具体代码落地
//定义这个封装函数
function toDo(arr,pid = '') {
//定义一个最后得到处理之后的属性数据数组,取名为 newarr
const newarr=[]
//循环遍历我们要操作的数据,先找到第一层,第一层是pid为空的这一项
arr.forEach(item => {
//筛选第一层
if(item.pid === pid) {
//筛选不是第一层的,不是第一层的特征是-->传入的id等于原本数据的pid
const child = toDo(arr, item.id)
if(child.length){
item.children = child
}
newarr.push(item)
}
})
return newarr
}
//调用函数
console.dir(toDo(arr))