findNode
在树形结构中查找节点
查找节点
找到节点:
{
"id": 2,
"name": "Child 1-1"
}树形结构
[
{
"id": 1,
"name": "Parent 1",
"children": [
{
"id": 2,
"name": "Child 1-1"
},
{
"id": 3,
"name": "Child 1-2",
"children": [
{
"id": 6,
"name": "Grandchild 1-2-1"
}
]
}
]
},
{
"id": 4,
"name": "Parent 2",
"children": [
{
"id": 5,
"name": "Child 2-1"
}
]
}
]函数签名
typescript
interface FindNodeOptions {
childrenKey?: string
}
function findNode<T>(
tree: T | T[],
predicate: (node: T) => boolean,
options?: FindNodeOptions
): T | null参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
tree | T | T[] | 是 | 树形数据 |
predicate | (node: T) => boolean | 是 | 查找条件函数 |
options | FindNodeOptions | 否 | 配置选项 |
返回值
| 类型 | 说明 |
|---|---|
T | null | 找到的节点,未找到返回null |
工作原理
- 将输入转换为数组格式
- 深度优先遍历树结构
- 对每个节点执行predicate函数
- 如果条件满足,立即返回该节点
- 否则递归查找子节点
- 所有节点都不满足则返回null