需求: 给定一个数组,将children数组降维添加到数组中,生成一个新的一维数组
interface Item {
id: number,
name: string,
age: number,
children?: Array<Item>
}
type Items = Array<Item>
const arr: Items = [
{
id: 1,
name: 'zs',
age: 18
},
{
id: 2,
name: 'lisi',
age: 19,
children: [
{
id: 3,
name: 'wangwu',
age: 20
},
{
id: 4,
name: 'zhaoliu',
age: 21,
children: [
{
id: 5,
name: 'tianqi',
age: 22
}
]
}
]
},
{
id: 6,
name: 'wb',
age: 23
}
]
代码实现
const deepTree = (arr: Items, tempArr?: Items): Items => {
const result: Items = tempArr || []
arr.forEach((item: Item) => {
if (item.children) {
const { children, ...obj } = item
result.push(obj)
deepTree(children, result)
return
}
result.push(item)
})
return result
}
js实现