//假设这是后台返回的数据
const list = [
{parentId:null, id:1},
{parentId:null:null, id:2},
{parentId:null:1, id:3},
{parentId:null:1, id:4},
{parentId:null:2, id:5},
{parentId:null:2, id:6},
{parentId:null:3, id:7}
]
//结果数组
var result = []
//先把最外层的父级找到
list.forEach(item => {
if (!item.parentId) {
result.push(item)
}
})
//运行主体代码
run(result)
function run(x) {
x.forEach(item => {
//创建他的孩子数组
item.children = []
//遍历所有数据找到属于他的孩子
list.forEach((ite, index) => {
if (item.id === ite.parentId) {
item.children.push(ite)
}
})
//如果他有孩子,再次调用主体函数传入孩子,找孩子的孩子(以此类推)
if (item.children.length != 0) {
run(item.children)
}
})
}
08-17
620
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
04-15
340
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-11
640
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-28
953
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)