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)!