【发布时间】:2012-08-28 22:31:46
【问题描述】:
有没有办法让我在满足条件后摆脱数组映射方法?我尝试了以下抛出 "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 方法完成相同的操作?
【问题讨论】:
-
它本质上是 Rob W 所指问题的重复。然而,这种误解的根源在于
map方法的错误使用,它的目的是,嗯,映射值,所以它不应该停止迭代 -
或者
[].reduce。将[]作为第二个参数传递,并且仅在满足条件时进行修改。 -
我也不明白为什么这被标记为重复。链接的问题是关于
forEach,它有一个非常不同的解决方案。 -
/(这可能是一个黑客)
var myArray = [22, 34, 5, 67, 99, 0]; var BreakExc = {} var hasValueLessThanTen = false; try { myArray.map(function (value) { if (value < 10) { hasValueLessThanTen = true; throw BreakExc; } } ); } catch (e) { // this part can be simplified. its to make it readable if (e !== BreakException) { console.log(e) throw e; } else { // Do nothing. console.log(e) } }
标签: javascript