开发者社区> 问答> 正文

Array.forEach短路就像调用break

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

如何使用forEachJavaScript中的新方法执行此操作?我试过return;,return false;和break。break崩溃,return除了继续迭代外什么也不做。

展开
收起
保持可爱mmm 2020-01-08 16:53:59 486 0
1 条回答
写回答
取消 提交回答
  • 有没有内置的能力break的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; }

    JavaScript异常不是很漂亮。for如果您确实需要传统循环,则传统循环可能更合适break。 采用 Array#some

    而是使用Array#some:

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

    这工作,因为some回报率true只要任何回调,在排列顺序,返回执行true,短路,其余的执行。

    some,它的反函数every(将在上停止return false),以及forEach所有ECMAScript Fifth Edition方法,都需要将它们添加到Array.prototype缺少它们的浏览器中。

    问题来源于stack overflow

    2020-01-08 16:54:33
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载