解决场景:
使用递归把树形数据中的 children: [] 替换成 children: undefind
// page1.ts
import { formatTree } from './formatData.ts'
const treeLists = [
{
name: 'parent1',
id: 1,
childCount: 2,
parent: 0,
children: [
{
name: 'parent1-1',
id: 2,
childCount: 1,
parent: 1,
children: [
{
name: 'parent1-1-1',
id: 4,
parent: 2,
childCount: 0,
children: [],
}
]
},
{
name: 'parent1-2',
id: 3,
childCount: 0,
parent: 1,
children: [],
},
]
},
{
name: 'parent2',
id: 5,
childCount: 0,
parent: 0,
children: [],
},
{
name: 'parent3',
id: 6,
childCount: 1,
parent: 0,
children: [
{
name: 'parent3-1',
id: 7,
parent: 6,
childCount: 0,
children: [],
}
]
}
]
type TTreeList = {
name: string;
id: number;
childCount: number;
parent: number;
children?: TTreeList[]
}
const newTreeList = formatTree<TTreeList>(treeLists)
console.log('newTreeListtt', newTreeList)
// formatData.ts
type ITree<T> = {
childCount: number;
children: ITree<T>[];
} & T
function formatTree<T>(arr: ITree<T>[]): ITree<T>[] {
return arr.map((item: ITree<T>) => {
return {
...item,
children: item.childCount > 0 ? formatTree<T>(item.children) : undefined
}
})
}