我只是在JavaScript中使用forEach
方法来总结数组中的所有元素。突然感到需要在某些条件下突破循环,例如限制要计算的总和。
我想出了以下解决方案。如果我错了,请指出我。
小编辑
function foreach(a) {
var sum = 0;
var breakException = {error:"stop it"};
try {
a.forEach(function (v) {
sum += v;
console.log(sum);
if(sum>5) throw breakException.error;
});
return sum;
}
catch(e) {
if(e!=breakException){
throw e;
}
}
}
答案 0 :(得分:6)
forEach
不应该打破。如果您想要打破类似forEach
的循环,请尝试使用every
或some
,这样可以摆脱循环。
重写代码的可能方法可能是
var sum = 0;
yourArray.some(function (item) {
if (sum > 5) {
return true;
}
sum += item;
});
答案 1 :(得分:3)
你无法突破forEach
。只需使用正常循环
for(var i = 0; i < a; i++){
sum += a[i];
if(sum > 5) break;
}
答案 2 :(得分:1)
您当前的代码似乎有点傻。
你的try / catch块是没用的,因为你没有为catch块捕获错误,然后重新抛出(?)而你不需要alert("break");
停止剧本。
无论如何,你无法摆脱forEach
循环,我认为你只想使用正常的for循环:
function sum(list){
var sum = 0;
for (var i = 0, len = list.length; i < len; i++){
sum += list[i];
if (sum > 5){
break;
}
}
return sum;
}