可能重复:
How to short circuit Array.forEach like calling break?
有没有办法可以在满足条件后突破数组映射方法?我尝试了以下引发"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
方法完成相同的操作?
答案 0 :(得分:117)
使用内置Array.prototype.map
无法实现。但是,如果您不打算map
任何值,则可以使用简单的for
- 循环:
var hasValueLessThanTen = false;
for (var i = 0; i < myArray.length; i++) {
if (myArray[i] < 10) {
hasValueLessThanTen = true;
break;
}
}
或者,正如@RobW
所建议的那样,使用Array.prototype.some
来测试是否存在至少一个小于10的元素。当找到与您的函数匹配的元素时,它将停止循环:< / p>
var hasValueLessThanTen = myArray.some(function (val) {
return val < 10;
});