首页 > 解决方案 > 如何在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;
};

标签: javascript

解决方案


您不设置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;
};

推荐阅读