javascript - 如何在javascript中执行递归方法
问题描述
我正在尝试创建一个递归方法来查找。
但我不明白为什么它找到元素但返回未定义。
请问怎么解决?
这是我的代码:
export const findDmaFromHierarchy = (hierarchy: [], value: string): any => {
let founded = undefined;
hierarchy.forEach((dma: any) => {
if (dma.children) {
findDmaFromHierarchy(dma.children, value);
}
if (String(dma.value) === String(value)) {
console.log("founded: ", dma);
founded = Object.assign({}, dma);
return founded;
}
});
return founded;
};
解决方案
您不设置founded
递归调用何时找到该值。
export const findDmaFromHierarchy = (hierarchy: [], value: string): any => {
let founded = undefined;
hierarchy.forEach((dma: any) => {
if (dma.children) {
founded = findDmaFromHierarchy(dma.children, value);
if (founded) {
return founded;
}
}
if (String(dma.value) === String(value)) {
console.log("founded: ", dma);
founded = Object.assign({}, dma);
return founded;
}
});
return founded;
};
推荐阅读
- r - 如何将 R 数值数据框更改为有序因子的数据框?
- python - 加载具有各种数据类型的字典列表时出现 EOFError
- reactjs - Sinon 使用 Spy 进行表单验证出错
- java - 为什么这个 java 后缀表达式会返回这个结果?
- javascript - await 在表达式和语句中的行为是否相似?
- c - Linux:警告系统调用函数的隐式声明
- python-3.x - 使用 selenium/urllib 从 web 下载 python 3 中的图像文件
- php - PHP只能以777权限打开文件
- django - 在 Django 静态目录中自动创建文件夹
- c++ - 单链表 C++ 的插入排序