js递归过滤树形结构数据
时间: 2024-12-17 13:42:01 浏览: 5
在JavaScript中,递归是一种常用的技术来处理树形结构的数据,特别是当需要筛选、查找或扁平化数据的时候。递归函数会反复地调用自身,直到达到某个基本情况(如叶子节点或者结束条件),然后逐层返回结果。
假设你有一个类似这样的树形数据结构:
```javascript
const data = {
id: 1,
name: '根',
children: [
{
id: 2,
name: '子1',
children: [ { id: 5, name: '孙子1' } ]
},
{
id: 3,
name: '子2',
children: []
}
]
};
```
你可以编写一个递归函数来过滤满足特定条件的节点,例如只保留名字包含“子”的节点:
```javascript
function filterTree(node, condition) {
if (node && node.children) {
return node.children
.filter(child => condition(child))
.map(child => filterTree(child, condition));
} else {
// 达到基本情况,直接返回节点
return node ? { ...node, filtered: condition(node) } : null;
}
}
// 使用示例
const filteredData = filterTree(data, childNode => childNode.name.includes('子'));
阅读全文