Skip to content

@longmo-utils/common / filterTree

Function: filterTree()

ts
function filterTree<T>(
   tree, 
   filter, 
   options?): T[];

根据条件过滤给定树结构的节点

保留满足条件的节点及其祖先节点,保持原有的层级结构

Type Parameters

Type ParameterDescription
T extends Record<string, any>树节点类型,必须是对象类型

Parameters

ParameterTypeDescription
treeT[]要过滤的树结构的根节点数组
filter(node) => boolean用于匹配每个节点的条件函数
options?TreeConfigOptions配置选项

Returns

T[]

包含所有匹配节点的数组

Examples

typescript
const tree = [
  { id: 1, active: true, children: [
    { id: 2, active: false },
    { id: 3, active: true }
  ]},
  { id: 4, active: false }
];

const result = filterTree(tree, node => node.active);
console.log(result);
// [
//   { id: 1, active: true, children: [{ id: 3, active: true }] }
// ]
typescript
const tree = [
  { name: 'A', children: [{ name: 'Apple' }] },
  { name: 'B', children: [{ name: 'Banana' }] }
];

const result = filterTree(tree, node => node.name.includes('A'));
console.log(result);
// [
//   { name: 'A', children: [{ name: 'Apple' }] }
// ]
typescript
const tree = [
  { id: 1, items: [{ id: 2, visible: true }] }
];

const result = filterTree(
  tree,
  node => node.visible,
  { childProps: 'items' }
);

Released under the MIT License.