目标: 实现树状数据结构转为数组
- 若树的子节点最多只有一个children子节点
const tree = [
{
id: 1,
title: '研发部',
pid: null,
children: [
{
id: 5,
title: '前端研发部',
pid: 1
},
{ id: 6, title: '后端研发部', pid: 1 },
{ id: 7, title: '算法研发部', pid: 1 }
]
},
{
id: 2,
title: '研发部',
pid: null,
children: [
{ id: 5, title: '前端研发部', pid: 2 },
{ id: 6, title: '后端研发部', pid: 2 },
{ id: 7, title: '算法研发部', pid: 2 }
]
},
{
id: 3,
title: '市场部',
pid: null
},
{
id: 4,
title: '销售部',
pid: null
}
]
function treeToArray(tree) {
const obj = []
tree.forEach((item) => {
if (item.children) {
obj.push( item, ...item.children )
// ES6新增的 删除对象的属性 Reflect.deleteProperty(对象,属性名)
Reflect.deleteProperty(item,'children')
} else {
obj.push(item)
}
})
return obj
}
console.log(treeToArray(tree))
- 若树的子节点下还有children子节点
const tree = [
{
id: 1,
title: '研发部',
pid: null,
children: [
{
id: 5,
title: '前端研发部',
pid: 1,
children: [
{
id: 10,
title: '人工智能',
pid: 2
}
]
},
{ id: 6, title: '后端研发部', pid: 1 },
{ id: 7, title: '算法研发部', pid: 1 }
]
},
{
id: 2,
title: '研发部',
pid: null,
children: [
{ id: 5, title: '前端研发部', pid: 2 },
{ id: 6, title: '后端研发部', pid: 2 },
{ id: 7, title: '算法研发部', pid: 2 }
]
},
{
id: 3,
title: '市场部',
pid: null
},
{
id: 4,
title: '销售部',
pid: null
}
]