数组的forEach方法如何中断循环,可以使用break吗?

coding2live 2021-01-21 22:22:15 104

[1,2,3].forEach(function(el) {
    if(el === 1) break;
});

在调用forEach方法进行循环数组的时候,我想在某种情况下中断循环,请问如何做呢?

我试了return;return false;break等方法,都无法中断循环。

以下答案仅供参考

在js的forEach中,不存在一种方法可以中断它的执行。

要中断forEach的循环,必须抛出某种类型的异常。

例如:

var BreakException = {};

try {
  [1, 2, 3].forEach(function(el) {
    console.log(el);
    if (el === 2) throw BreakException;
  });
} catch (e) {
  if (e !== BreakException) throw e;
}

上面的写法并不是很优雅。

如果你确实需要在循环的某个时机中断它,可以试试普通的for循环。

使用Arrary.some方法

调整后的代码如下:

[1, 2, 3].some(function(el) {
  console.log(el);
  return el === 2;
});

数组的some方法,如果在循环的的过程中返回了true,则循环就会停止,从而提高运行效率。

与之对应的是every方法,在返回false时停止。

这些方式都是在ECMAScript第五版中出现的,在使用的时候要注意兼容性。