traverseTree Tree
作用
就地遍历树并按顺序执行回调;可写入层级,返回原数组引用。
签名
traverseTree({ tree, callback(node, level), childrenKey='children', levelKey, order='pre' })
引入
import { traverseTree } from 'flit-kit'
参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
tree | Array<object> | [] | 输入树 |
callback | (node,level)=>void | 必填 | 回调在原节点上执行 |
childrenKey | string | 'children' | 子节点字段名 |
levelKey | string | undefined | 若提供则写入层级到输出节点 |
order | `'pre' | 'post' | 'level'` |
示例
const next = traverseTree({ tree, levelKey: 'level', callback: (node, level) => { node.tag = `L${level}` }, order: 'level' })
说明
- 先序:当前→子;后序:子→当前;层序:按层走 BFS
- 函数会就地修改原树节点(写入 level/tag)
复杂度
- O(n)
返回值
Array<object>原数组引用
输出
[
{
"id": 1,
"parentId": null,
"name": "A",
"sort": 2,
"level": 1,
"tag": "L1",
"children": [
{
"id": 2,
"parentId": 1,
"name": "A-1",
"sort": 1,
"level": 2,
"tag": "L2",
"children": []
},
{
"id": 3,
"parentId": 1,
"name": "A-2",
"sort": 2,
"level": 2,
"tag": "L2",
"children": []
}
]
}
]