树形结构数据,根据关键字模糊匹配,拿到所有符合项的父级key值的js遍历方法怎么写
时间: 2024-09-12 07:07:03 浏览: 40
树形结构数据在JavaScript中通常以对象或数组的形式表示,其中每个节点可能包含一个关键字(key)和子节点数组。对于基于关键字的模糊匹配并获取所有符合条件项的父级key值,可以使用递归或迭代的方法进行遍历。以下是使用递归方法的示例代码:
```javascript
function findParentKeysByKeyword(root, keyword) {
let parentKeys = []; // 存储所有符合条件的父级key值的数组
function traverse(node) {
// 检查当前节点是否含有关键字或其子节点是否含有关键字
if (node.key.includes(keyword)) {
parentKeys.push(node.key); // 如果当前节点符合条件,添加其key值
}
// 遍历当前节点的所有子节点
if (node.children && node.children.length > 0) {
node.children.forEach(child => {
traverse(child); // 递归遍历子节点
});
}
}
traverse(root); // 从根节点开始遍历
return parentKeys; // 返回所有找到的父级key值
}
// 示例使用
let treeData = {
key: 'root',
children: [
{
key: 'child1',
children: [
{ key: 'child1_1', children: [] },
{ key: 'child1_2', children: [] }
]
},
{
key: 'child2',
children: [
{ key: 'child2_1', children: [] },
{ key: 'child2_2', children: [] }
]
}
]
};
let keyword = '1'; // 模糊匹配的关键字
let result = findParentKeysByKeyword(treeData, keyword);
console.log(result); // 输出匹配的父级key值数组
```
在这个示例中,`traverse` 函数是一个递归函数,它会遍历给定的树形结构数据,并检查每个节点的关键字是否包含给定的`keyword`。如果包含,那么就将该节点的`key`值添加到`parentKeys`数组中。该函数还会递归地遍历每个节点的子节点。
需要注意的是,这个例子假设每个节点都有一个`key`属性和一个`children`属性,其中`children`是一个包含子节点的数组。
阅读全文