filter

Filter a tree by a predicate, keeping matching nodes along with their ancestors so the surviving branches remain navigable.

Usage

The filter method filters a tree based on a predicate function. Unlike array's filter, it retains all nodes that satisfy the condition as well as their ancestor nodes, thereby maintaining the tree structure.

example.ts
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 will be:
[
  { 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[]

Parameters

tree
T[] required
The source tree array.
predicate
(context: VisitorContext<T>) => boolean required
A predicate function called for each node in the tree. If the function returns true, that node and all its ancestor nodes will be retained in the result. The function receives a context object with the following properties:
config
TreeConfig
Configuration object for customizing the id, pid, children key names in the tree structure.

Returns

T[]
Returns a new, filtered tree array.

Changelog

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