Skip to content

根据条件搜索树

方法使用

js
import { getFilterBySearch } from "yiu-tree";

const tree = [
  {
    id: 1,
    children: [
      { id: "1-1", children: [{ id: "1-1-1" }, { id: "1-1-2" }] },
      { id: "1-2" },
      { id: "1-3" },
    ],
  },
  { id: 2, children: [{ id: "2-1" }] },
  { id: 3 },
  { id: 4 },
];
const result = getFilterBySearch(tree, (node) => node.id === 2);
console.log(`过滤结果 :>> ${result}`);

方法描述

getFilterBySearch(tree, searchFunc, [opt])

方法默认开启深拷贝。

根据传入的搜索方法返回负荷条件的树。

  • NodeType: T
  • getFilterBySearch<T>: 泛型支持传入你定义的节点类型
  • tree:
    • 类型: T[]
    • 说明: 传入的树数据
  • searchFunc:
    • 类型: (node: T, [nodeInfo: TreeNodeInfo<T>]) => boolean
    • 说明: 搜索函数
  • opt:
    • 类型: TreeFilterOpt<T>
    • 说明: 过滤配置

配置说明

TreeFilterOpt中有两项配置对于过滤来说很重要:

参数名称类型默认值说明
parentMatchbooleanfalse父节点是否需要匹配
childrenMatchbooleantrue子节点是否需要匹配

二者搭配出来的过滤效果如下:

parentMatchchildrenMatch说明
falsefalse当一个节点匹配搜索函数后,将忽略其父节点、子节点、子孙节点的匹配结果
falsetrue当一个节点匹配搜索函数后,将忽略其父节点的匹配结果
truetrue所有节点都会进行函数匹配
truefalse当一个节点匹配搜索函数后,其所有子节点、子孙节点都会匹配

Released under the MIT License.