扁平数组转=>JSON树结构 莫名其妙实现了但是不知道什么原理
扁平数据结构转成树结构
要求:
parent_id 是父级的id 应放到父级children下 如没有就不添加
- 代码如下
```javascript
let flatArr = [{
id: 3,
title: '层级关系2-1',
parent_id: 2
},
{
id: 4,
title: '层级关系3-1',
parent_id: 3
},
{
id: 7,
title: '层级关系5-1',
parent_id: 5
},
{
id: 1,
title: "层级关系1",
parent_id: 0
},
{
id: 2,
title: '层级关系2',
parent_id: 0
}, {
id: 5,
title: '层级关系4-1',
parent_id: 4
},
{
id: 6,
title: '层级关系2-2',
parent_id: 2
}
]
flatArr.forEach(v => v.children = flatArr.filter(v2 => v2.parent_id == v.id));
console.log(flatArr = flatArr.filter(v => v.parent_id == 0));
//结果:树结构
[{
"id": 1,
"title": "层级关系1",
"parent_id": 0,
"children": []
},
{
"id": 2,
"title": "层级关系2",
"parent_id": 0,
"children": [{
"id": 3,
"title": "层级关系2-1",
"parent_id": 2,
"children": [{
"id": 4,
"title": "层级关系3-1",
"parent_id": 3,
"children": [{
"id": 5,
"title": "层级关系4-1",
"parent_id": 4,
"children": [{
"id": 7,
"title": "层级关系5-1",
"parent_id": 5,
"children": []
}]
}]
}]
},
{
"id": 6,
"title": "层级关系2-2",
"parent_id": 2,
"children": []
}
]
}
]
``
就会莫名其妙成功转成树结构 但是 我不明白原理 希望大佬 帮我解下惑
上面代码意思 我是本来想循环第一层的对象 给他过滤赋值 ,
符合 parent_id == v.id children的属性的数组集合,
但是我刚写完 打印一下 就发现内部也进行了插入和循环 貌似实现了功能,
我一脸蒙逼,琢磨了好久也没有也想明白为什么,
我看网上都是用 递归做的,
还希望 有看得明白的大佬帮忙深入解答一下为什么