在Javascript中打破嵌套循环的最好方法是什么?

//Write the links to the page.
for (var x = 0; x < Args.length; x++)
{
   for (var Heading in Navigation.Headings)
   {
      for (var Item in Navigation.Headings[Heading])
      {
         if (Args[x] == Navigation.Headings[Heading][Item].Name)
         {
            document.write("<a href=\"" 
               + Navigation.Headings[Heading][Item].URL + "\">" 
               + Navigation.Headings[Heading][Item].Name + "</a> : ");
            break; // <---HERE, I need to break out of two loops.
         }
      }
   }
}

当前回答

如果你使用Coffeescript,有一个方便的“do”关键字,可以更容易地定义并立即执行匿名函数:

do ->
  for a in first_loop
    for b in second_loop
      if condition(...)
        return

...所以你可以简单地使用“return”来退出循环。

其他回答

如果你使用Coffeescript,有一个方便的“do”关键字,可以更容易地定义并立即执行匿名函数:

do ->
  for a in first_loop
    for b in second_loop
      if condition(...)
        return

...所以你可以简单地使用“return”来退出循环。

我有点晚了,但下面是一种语言无关的方法,它不使用GOTO/标签或函数包装:

for (var x = Set1.length; x > 0; x--)
{
   for (var y = Set2.length; y > 0; y--)
   {
      for (var z = Set3.length; z > 0; z--)
      {
          z = y = -1; // terminates second loop
          // z = y = x = -1; // terminate first loop
      }
   }
}

从好的方面来看,它自然流动,这应该会取悦非goto人群。缺点是,内部循环需要在终止之前完成当前迭代,因此它可能不适用于某些场景。

var str = "";
for (var x = 0; x < 3; x++) {
    (function() {  // here's an anonymous function
        for (var y = 0; y < 3; y++) {
            for (var z = 0; z < 3; z++) {
                // you have access to 'x' because of closures
                str += "x=" + x + "  y=" + y + "  z=" + z + "<br />";
                if (x == z && z == 2) {
                    return;
                }
            }
        }
    })();  // here, you execute your anonymous function
}

这是怎么回事?:)

赋给处于比较条件的值

function test(){
    for(var i=0;i<10;i++)
    {
            for(var j=0;j<10;j++)
            {
                    if(somecondition)
                    {
                            //code to Break out of both loops here
                            i=10;
                            j=10;
                    }
                    
            }
    }

    //Continue from here

}

一个for .的例子。的,接近上面检查中止条件的示例:

test()
function test() {
  var arr = [1, 2, 3,]
  var abort = false;
  for (var elem of arr) {
    console.log(1, elem)

    for (var elem2 of arr) {
      if (elem2 == 2) abort = true;  
        if (!abort) {
            console.log(2, elem2)
        }
    }
  }
}

条件1 -外部循环-将始终运行 投票和接受最多的答案也适用于这种for循环。

结果:内部循环将按预期运行一次

1 1
2 1
1 2
1 3