我有一个角foreach循环,我想打破循环,如果我匹配一个值。下面的代码不能工作。

angular.forEach([0,1,2], function(count){
  if(count == 1){
    break;
  }
});

我怎样才能得到这个?


当前回答

break在angular forEach中是不可能实现的,我们需要修改forEach来实现。

$scope.myuser = [{name: "Ravi"}, {name: "Bhushan"}, {name: "Thakur"}];  
                angular.forEach($scope.myuser, function(name){
                  if(name == "Bhushan") {
                    alert(name);
                    return forEach.break(); 
                    //break() is a function that returns an immutable object,e.g. an empty string
                  }
                });

其他回答

通常在javascript中没有办法打破“each”循环。 通常能做的是使用“短路”法。

array.forEach(函数(项){ //如果条件不满足,则继续进行下一轮迭代。 If (!condition)返回; //如果条件满足,在这里做你的逻辑 console.log(“做东西。”) }

你可以用这个:

var count = 0;
var arr = [0,1,2];
for(var i in arr){
   if(count == 1) break;
   //console.log(arr[i]);
}

请使用ForEach的一些或所有实例,

Array.prototype.some:
some is much the same as forEach but it break when the callback returns true

Array.prototype.every:
every is almost identical to some except it's expecting false to break the loop.

例如:

var ary = ["JavaScript", "Java", "CoffeeScript", "TypeScript"];

ary.some(function (value, index, _ary) {
    console.log(index + ": " + value);
    return value === "JavaScript";
});

每个的例子:

var ary = ["JavaScript", "Java", "CoffeeScript", "TypeScript"];

ary.every(function(value, index, _ary) {
    console.log(index + ": " + value);
    return value.indexOf("Script") > -1;
});

查找更多信息 http://www.jsnoob.com/2013/11/26/how-to-break-the-foreach/

具体地说,您可以退出forEach循环,并在任何位置抛出异常。

try {
   angular.forEach([1,2,3], function(num) {
      if (num === 2) throw Error();
   });
} catch(e) {
    // anything
}

但是,如果您使用其他库或实现自己的函数(在这种情况下是find函数)会更好,因此您的代码是最高级别的。

使用Return打破循环。

angular.forEach([0,1,2], function(count){
  if(count == 1) {
    return;
  }
});