如何在javascript中执行递归方法
我试图创建一个递归方法来查找 但我不明白为什么它会找到元素,但返回未定义的 请问如何解决这个问题 这是我的密码:如何在javascript中执行递归方法,javascript,Javascript,我试图创建一个递归方法来查找 但我不明白为什么它会找到元素,但返回未定义的 请问如何解决这个问题 这是我的密码: export const findDmaFromHierarchy = (hierarchy: [], value: string): any => { let founded = undefined; hierarchy.forEach((dma: any) => { if (dma.children) { findDmaFromHierar
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;
};
你可以带上Arraysome,一找到就早点回来
然后,我建议检查是否找到了值,并分配对象,然后返回true。若要将此检查移动到函数前面,将忽略对子对象的不必要检查
对于孩子们,取一个临时变量并检查它,赋值并返回
export const findDmaFromHierarchy = (hierarchy: [], value: string): any => {
let found = undefined;
hierarchy.some((dma: any) => {
if (String(dma.value) === String(value)) {
console.log("founded: ", dma);
found = Object.assign({}, dma);
return true;
}
if (dma.children) {
let temp = findDmaFromHierarchy(dma.children, value);
if (temp) {
found = temp;
return tru;
}
}
});
return found;
};
您没有对递归调用的返回值执行任何操作。您无法从返回。forEach,请使用vanilla for Loop,因为您没有从'FindDdmaFromHierarchyDMA.children,value;'获取任何值保持不变