var data = [{
id: 0,
name: "父亲0"
}, {
id: 1,
name: "父亲1"
}, {
id: 2,
name: "父亲2"
}, {
id: 4,
name: "儿子00",
parentId: 0
}, {
id: 5,
name: "儿子01",
parentId: 0
}, {
id: 6,
name: "儿子10",
parentId: 1
}, {
id: 7,
name: "儿子11",
parentId: 1
}, {
id: 8,
name: "儿子20",
parentId: 2
}
]
function listToTree(data) {
let arr = JSON.parse(JSON.stringify(data))
const listChildren = (obj, filter) => {
[arr, obj.children] = arr.reduce((res, val) => {
if (filter(val))
res[1].push(val)
else
res[0].push(val)
return res
}, [
[],
[]
])
obj.children.forEach(val => {
if (arr.length)
listChildren(val, obj => obj.parentId === val.id)
})
}
const tree = {}
listChildren(tree, val => arr.findIndex(i => i.id === val.parentId) === -1)
return tree.children
}
console.log(listToTree(data));
数组按照唯一父id进行分类
最新推荐文章于 2024-06-17 16:05:29 发布