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);
js如何将一个树结构数据,进行筛选过滤,得到满足条件的树结构数据
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 1. 树结构示意图 补充: 兄弟节点:具有相同父节点的节点互称为兄弟节点。 树的深度:从根节点开始(其深度为0)自...
- 今天在做栏目树的处理的时候,对于树结构的操作有点晕,看了一篇文章,感觉讲解的挺好的,测试了一下文中的代码,感觉挺好...
- 1.堆排序基本介绍 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间...