如何在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;'获取任何值保持不变