flattenTree
将树形结构扁平化为一维数组
树形结构
[
{
"id": 1,
"name": "根节点1",
"children": [
{
"id": 2,
"name": "子节点1-1",
"children": [
{
"id": 4,
"name": "孙节点1-1-1"
}
]
},
{
"id": 3,
"name": "子节点1-2"
}
]
},
{
"id": 5,
"name": "根节点2",
"children": [
{
"id": 6,
"name": "子节点2-1"
}
]
}
]扁平化结果
[
{
"id": 1,
"name": "根节点1",
"level": 0
},
{
"id": 2,
"name": "子节点1-1",
"level": 1
},
{
"id": 4,
"name": "孙节点1-1-1",
"level": 2
},
{
"id": 3,
"name": "子节点1-2",
"level": 1
},
{
"id": 5,
"name": "根节点2",
"level": 0
},
{
"id": 6,
"name": "子节点2-1",
"level": 1
}
]函数签名
typescript
interface FlattenTreeOptions {
childrenKey?: string
addLevel?: boolean
levelKey?: string
}
function flattenTree<T>(tree: T | T[], options?: FlattenTreeOptions): T[]参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
tree | T | T[] | 是 | 树形数据(数组或单个节点) |
options | FlattenTreeOptions | 否 | 配置选项 |
返回值
| 类型 | 说明 |
|---|---|
T[] | 扁平化后的一维数组 |
工作原理
- 将输入转换为数组格式
- 递归遍历每个节点
- 提取节点数据(排除children字段)
- 如果启用addLevel,添加层级信息
- 递归处理子节点,层级+1
- 返回扁平化数组