我有一个角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
                  }
                });

其他回答

据我所知,Angular并没有提供这样的函数。你可能想要为此使用下划线的find()函数(它基本上是一个forEach,一旦函数返回true就会跳出循环)。

http://underscorejs.org/#find

这是不可能的。见https://github.com/angular/angular.js/issues/263。取决于你在做什么,你可以使用布尔值来不进入循环体。喜欢的东西:

var keepGoing = true;
angular.forEach([0,1,2], function(count){
  if(keepGoing) {
    if(count == 1){
      keepGoing = false;
    }
  }
});

正如其他答案所说,Angular不提供这个功能。而jQuery可以,如果你已经加载了jQuery和Angular,你就可以使用它

jQuery.each ( array, function ( index, value) {
    if(condition) return false; // this will cause a break in the iteration
})

参见http://api.jquery.com/jquery.each/

onSelectionChanged(event) {
    let selectdata = event['api']['immutableService']['gridOptionsWrapper']['gridOptions']['rowData'];
    let selected_flag = 0;

    selectdata.forEach(data => {
      if (data.selected == true) {
        selected_flag = 1;
      }
    });

    if (selected_flag == 1) {
      this.showForms = true;
    } else {
      this.showForms = false;
    }
}

请使用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/