封装一个js的根据子级code查找其所有父级code的递归方法
时间: 2024-12-08 20:15:58 浏览: 7
smt.rar_code antenna_smart antenna_smt
在JavaScript中,你可以封装一个递归函数来查找给定子级`code`的所有父级`code`。下面是一个简单的例子:
```javascript
function findParentCodes(node, childCode, parentCodes = []) {
// 如果当前节点的code匹配子级code,将其添加到结果数组中,并继续搜索父节点
if (node.code === childCode) {
parentCodes.push(node.code);
}
// 如果当前节点有子节点,对每个子节点递归调用该函数
if (node.children && node.children.length > 0) {
for (let i = 0; i < node.children.length; i++) {
findParentCodes(node.children[i], childCode, parentCodes);
}
}
return parentCodes;
}
// 示例数据结构,假设有一个树形结构的对象表示代码层级关系
const codeTree = {
id: 1,
code: 'A',
children: [
{ id: 2, code: 'B', children: [{ id: 3, code: 'D' }] },
{ id: 4, code: 'C' },
],
};
// 使用示例
const parentCodesForChildD = findParentCodes(codeTree, 'D');
console.log(parentCodesForChildD); // 输出:['A', 'B']
```
在这个例子中,`findParentCodes`函数接受一个节点、子级`childCode`以及一个可选的已找到的父级代码数组。它会检查节点是否就是目标子级,如果是,则将其添加到结果数组中;然后遍历节点的子节点并递归调用自身。最后返回包含所有父级代码的结果。
阅读全文