Js将扁平的数组转为树形结构
转换前数据
let data = [
{
id: 1,
value: '颜色',
parentId: 0
},
{
id: 101,
value: '红色',
parentId: 1
},
{
id: 102,
value: '蓝色',
parentId: 1
},
{
id: 10201,
value: '浅蓝色',
parentId: 102
},
{
id: 2,
value: '形状',
parentId: 0
},
{
id: 201,
value: '矩形',
parentId: 2
},
{
id: 202,
value: '圆形',
parentId: 2
},
]
关键代码
注意reduce第二个参数传空数组[]
const newData = data.reduce((prev, curr, index, arr) => {
curr.children = arr.filter(v => v.parentId === curr.id)
if (!curr.parentId) {
prev.push(curr)
}
return prev
}, [])