Skip to content

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

参数

参数名类型必填说明
treeT | T[]树形数据
predicate(node: T) => boolean查找条件函数
optionsFindNodeOptions配置选项

返回值

类型说明
T | null找到的节点,未找到返回null

工作原理

  1. 将输入转换为数组格式
  2. 深度优先遍历树结构
  3. 对每个节点执行predicate函数
  4. 如果条件满足,立即返回该节点
  5. 否则递归查找子节点
  6. 所有节点都不满足则返回null