自学内容网 自学内容网

js 树过滤(保留树结构和不保留树结构)

保留树结构过滤

function filterTreeNodes(nodes, filterFn) {
  return nodes
    .map(node => {
      const newNode = { ...node };
      if (newNode.children) {
        newNode.children = filterTreeNodes(newNode.children, filterFn);
      }
      return newNode;
    })
    .filter(node => filterFn(node) || (node.children && node.children.length > 0));
}

// 过滤函数,例子中根据节点的 label 进行过滤
const filterFn = node => node.label.includes('1');

const filteredTree = filterTreeNodes(treeData, filterFn);

console.log(filteredTree);

不需要保留树结构的

function filterTreeNodesToFlatList(nodes, filterFn) {
  let result = [];

  nodes.forEach(node => {
    if (filterFn(node)) {
      result.push(node); // 符合条件的节点直接添加到结果数组中
    }
    if (node.children && node.children.length > 0) {
      result = result.concat(filterTreeNodesToFlatList(node.children, filterFn)); // 递归处理子节点
    }
  });

  return result;
}

// 过滤函数,例子中根据节点的 label 进行过滤
const filterFn = node => node.label.includes('1');

const flatFilteredNodes = filterTreeNodesToFlatList(treeData, filterFn);

console.log(flatFilteredNodes);


原文地址:https://blog.csdn.net/qq_40596257/article/details/142859905

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!