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.堆排序基本介绍 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间...