167

可能重复:
如何像调用break一样短路Array.forEach?

有没有办法在满足我的条件后打破数组映射方法?我尝试了以下抛出的"Illegal Break Statement" Error.方法 这是我想出的一些随机示例。

var myArray = [22,34,5,67,99,0];

var hasValueLessThanTen = false;

myArray.map(function (value){
    if(value<10){
      hasValueLessThanTen = true;
      break;
    }
  }
);

我们可以使用for循环,但我想知道我们是否可以使用map方法完成相同的操作?

4

1 回答 1

216

使用内置的Array.prototype.map. for但是,如果您不打算使用map任何值,则可以使用简单的循环:

var hasValueLessThanTen = false;
for (var i = 0; i < myArray.length; i++) {
  if (myArray[i] < 10) {
    hasValueLessThanTen = true;
    break;
  }
}

或者,如建议的那样@RobW,用于Array.prototype.some测试是否存在至少一个小于 10 的元素。当找到与您的函数匹配的某个元素时,它将停止循环:

var hasValueLessThanTen = myArray.some(function (val) { 
  return val < 10;
});
于 2012-09-04T09:32:50.847 回答