题目
将下面的数组转成树形结构,一开始脑袋一热,以为写一课树完事,然后就直接写了一棵树,然后直接跑题gg
//[{pid:-1,id:0},{pid:0,id:1},{pid:0,id:2},{pid:2,id:3}]
//转成
// {
// id:0,
// children:[
// {
// id:1, children:[]
// },
// {
// id:2, children:[
// {
// id:3, children:[]
// }
// ]
// }
// ]
// }
常规迭代方法
let arr1 = [{pid:-1,id:0},{pid:0,id:1},{pid:0,id:2},{pid:2,id:3}]
function putIntoTree(arr) {
let res = [];
if (arr.length === 0) {return;}
for(let i = 0; i < arr.length; i++) {
let node = {id: arr[i].id, children: []};
res.push(node)
}
console.log(res);
for (let i = 0; i < res.length; i ++) {
for (let j = 0; j < arr.length; j ++) {
if (arr[i].pid === res[j].id) {
console.log('i------j',i, j)
res[j].children.push(res[i]);
}
}
}
return res[0];
}
console.log(putIntoTree(arr1));
递归的方法继续思考