【问题标题】:break for of loop with recursion用递归中断 for 循环
【发布时间】:2026-02-24 09:30:02
【问题描述】:

我有一个接受节点和对象的函数。较大的对象可能具有children 的属性,这是一个形状相似的节点数组。该函数正在查看顶层,然后如果有子节点,则逐个查看,直到找到匹配的节点。

我的console.log 语句总是记录一些东西。但该功能继续运行。我相信这并没有打破看着其他孩子的循环。

找到匹配项后完全退出此功能我缺少什么?

findNodeInStateHierarchy = (node, stateHierarchyNode) => {
    if (node.id === stateHierarchyNode.id) {
      console.log(stateHierarchyNode);
      return stateHierarchyNode;
    }
    else {
      if (stateHierarchyNode.children) {
        for (let child of stateHierarchyNode.children) {
          this.findNodeInStateHierarchy(node, child);
        }
      }
   }
}

【问题讨论】:

    标签: javascript loops recursion


    【解决方案1】:
    findNodeInStateHierarchy = (node, stateHierarchyNode) => {
        if (node.id === stateHierarchyNode.id) {
          console.log(stateHierarchyNode);
          return stateHierarchyNode;
        } else {
          if (stateHierarchyNode.children) {
            for (let child of stateHierarchyNode.children) {
              const result = this.findNodeInStateHierarchy(node, child);
              if (result !== null) {
                  return result;
              }
            }
          }
          return null;
       }
    }
    

    【讨论】: