перерыв для цикла с рекурсией - PullRequest
0 голосов
/ 25 августа 2018

У меня есть функция, которая принимает узел и объект. Более крупный объект потенциально обладает свойством 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);
        }
      }
   }
}

1 Ответ

0 голосов
/ 25 августа 2018
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;
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...