首页 > 解决方案 > 当满足条件时,如何仅为实例执行嵌套 for 循环内的代码?

问题描述

我正在使用嵌套的 for 循环将数组中的项与同一数组中的其他项进行比较。一旦满足有关要比较的项目的特定条件,我想停止循环并将这两个项目推入不同的数组。然而,问题是,当满足条件时,它将把这两项推入数组中,以获取嵌套循环中的迭代次数。在满足条件的一次,我将如何只将这些项目推入新数组?

我已经尝试打破最初的 for 循环,但这似乎没有任何作用。

outer_loop:

for (let i = 0; i < varifiedKeypoints.length; i++) {

  let initialKeypoint = varifiedKeypoints[i];

  for (let j = 0; j < varifiedKeypoints.length; j++) {

    let comparisonKeypoint = varifiedKeypoints[j];

    if (initialKeypoint.part != comparisonKeypoint.part) {

      if (Math.abs(comparisonKeypoint.position.x - initialKeypoint.position.x) <= 20
      && Math.abs(comparisonKeypoint.position.y - initialKeypoint.position.y) <= 20) {

        if (keypointsCompatible(initialKeypoint.part, comparisonKeypoint.part)) {

          console.log("Activating part: " + initialKeypoint.part);
          console.log("Activated part: " + comparisonKeypoint.part);

          let keypointPair = {
            point_1: initialKeypoint.part,
            point_2: comparisonKeypoint.part
          }

          console.log("Pushing parts!");
          activeParts.push(keypointPair);

          console.log("breaking loop!");
          break outer_loop;

          console.log("Loop broken - NOT!!!")
        }
      }
    }
  }
}

标签: javascriptfor-loop

解决方案


在你的第一个 for 循环上面添加这个

outer_loop: 

然后在你的情况下爆发

break outer_loop;

推荐阅读