微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

短路 Array.forEach 就像调用 break

如何解决短路 Array.forEach 就像调用 break

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

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 异常并不是非常漂亮。如果您确实需要在其中使用传统的for循环,则可能更合适break

利用Array#some

相反,使用Array#some

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

这是有效的,因为任何回调都会立即some返回true,以数组顺序执行, return true,短路其余部分的执行。

some,它的逆every(将在 a 上停止return false),并且forEach都是 ECMAScript 第五版方法,需要将它们添加Array.prototype缺少它们的浏览器中。

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。