filter

根据 predicate 过滤树,只保留满足条件的节点及其所有父节点。

filter

filter 方法根据 predicate 函数过滤树。与数组的 filter 不同,它会保留所有满足条件的节点以及这些节点的所有父节点,从而维持树的结构。

用法

import { Tree } from '@movk/core'

const tree = [
  { id: 1, name: 'Root', children: [
    { id: 2, name: 'Active User' },
    { id: 3, name: 'Inactive User', children: [{ id: 4, name: 'Active Child' }] }
  ] }
]

const activeTree = Tree.filter(tree, ({ node }) => node.name.includes('Active'))

/*
activeTree 将会是:
[
  { id: 1, name: 'Root', children: [
    { id: 2, name: 'Active User', children: [] },
    { id: 3, name: 'Inactive User', children: [{ id: 4, name: 'Active Child', children: [] }] }
  ]}
]
*/

API

filter<T extends TreeNode>(tree: T[], predicate: (context: VisitorContext<T>) => boolean, config?: TreeConfig): T[]

参数

tree
T[] required
源树形结构数组。
predicate
(context: VisitorContext<T>) => boolean required
一个谓词函数,对树中的每个节点调用。如果函数返回 true,该节点及其所有父节点将被保留在结果中。 该函数接收一个包含以下属性的 context 对象:
config
TreeConfig
用于自定义树形结构中 id, pid, children 键名的配置对象。

返回值

T[]
返回一个新的、经过过滤的树数组。

Changelog

No recent changes
Copyright © 2024 - 2025 YiXuan - MIT License