javascript - 短路 Array.forEach 就像调用 break

标签 javascript arrays foreach

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

如何使用 JavaScript 中的新 forEach 方法来做到这一点?我试过 return;return false;breakbreak 崩溃,return 除了继续迭代什么都不做。

最佳答案

forEach 中没有内置的break 功能。要中断执行,您必须抛出某种异常。例如。

var BreakException = {};

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

JavaScript 异常并不是非常漂亮。如果您确实需要在其中 break ,则传统的 for 循环可能更合适。

使用 Array#some

改为使用 Array#some :

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

这是因为 some 返回 true 任何回调,按数组顺序执行,返回 true,短路其余部分的执行。

一些,它的逆every (将在 return false 处停止)和 forEach 都是 ECMAScript 第五版方法,需要添加到 Array.prototype在缺少它们的浏览器上。

关于javascript - 短路 Array.forEach 就像调用 break,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2641347/

相关文章:

string - Swift 2.2 循环遍历字符串并获取字符和索引

javascript - 一次打开 1 个内容

javascript - 将数组的值推送到同一个数组中。它能走多深?为什么浏览器不会崩溃?

javascript - 我怎样才能复制这个 knockout 可观察到的?

c++ - 在不使用任何外部库的情况下在 C++ 中创建 mxn 二维数组

python - 在 NumPy 中对数组进行排序,在一列上升序,在另一列上降序

c#从列表中的字段中获取列表

php - 每次在数据库中找到该字符串时,都将其显示出来

javascript - 如何在 React JS onSubmit 函数调用中传递第二个参数

javascript - getElementsByClassName 和 IE8 : Object doesn't support this property or method