js如何将一个树结构数据,进行筛选过滤,得到满足条件的树结构数据

function multiFilterTree(tree, name, isOpen) {
  const filteredNodes = [];
  for (const node of tree) {
    const isNameMatch = name === null || (typeof name === 'string' && node.name.includes(name));
    const isOpenMatch = isOpen === null || node.isOpen === isOpen;

    if (isNameMatch && isOpenMatch) {
      const children = multiFilterTree(node.children, name, isOpen);
      filteredNodes.push({ ...node, children: children.length > 0 ? children : [] });
    } else {
      const children = multiFilterTree(node.children, name, isOpen);
      if (children.length > 0) {
        filteredNodes.push({ ...node, children });
      }
    }
  }
  return filteredNodes;
}

// 使用示例
const filteredNodes = multiFilterTree(treeData, 'a', true);
console.log(filteredNodes);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容