在JavaScript中破坏forEach方法的首选方法

时间:2015-03-28 16:55:18

标签: javascript arrays

我只是在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;
    }
}
}

3 个答案:

答案 0 :(得分:6)

forEach不应该打破。如果您想要打破类似forEach的循环,请尝试使用everysome,这样可以摆脱循环。

重写代码的可能方法可能是

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;
}