const treeList = [
{
name: '白班',
id: 1,
parentId: null,
children: [
{ name: '休息', id: 5, parentId: 1, children: [] },
{ name: '夜班', id: 2, parentId: 1, children: [] },
{
name: '全天',
id: 3,
parentId: 1,
children: [{ name: '夜大班', id: 6, parentId: 3, children: [] }]
}
]
},
{ name: '其他', id: 4, parentId: null, children: [] }
]
树形扁平化
const flatTree = list => {
let new_tree = []
for (const item of list) {
const { children, ...i } = item
if (children && children.length) {
new_tree = new_tree.concat(flatTree(children))
}
new_tree.push(i)
}
return new_tree
}
数组树型化
const likeTree = list => {
const idMap = {}
const result = []
list.forEach(item => {
idMap[item.id] = { ...item, children: [] }
})
list.forEach(item => {
if (item.parentId === null) {
result.push(idMap[item.id])
} else {
idMap[item.parentId].children.push(idMap[item.id])
}
})
return result
}