用JavaScript打破forEach循环

发布于:2021-01-14 10:15:39

0

853

0

JavaScript forEach forEach循环

我写了许多有关JavaScript技巧的博客文章:Promise技巧,类型转换技巧,传播技巧以及许多其他JavaScript技巧。最近,我遇到了另一个让我大吃一惊的JavaScript技巧:如何打破forEach循环!

要forEach随时中断循环,可以截断数组的length:

const myArray = [1, 2, 3]; myArray.forEach(item => {   // ... do some stuff   if(someConditionIsMet) {     // Break out of the loop by truncating array     myArray.length = 0;   } })

通过将数组设置length为0,可以清空数组并立即停止forEach。当然,清空阵列会丢失其原始数据,因此您可能需要[...myArray].forEach在执行此操作之前创建一个新的阵列()。

完成任务的另一种方法是抛出异常:

// https://stackoverflow.com/questions/2641347/short-circuit-array-foreach-like-calling-break let BreakException = {}; try {   [1, 2, 3].forEach(function(el) {     console.log(el);     if (el === 2) throw BreakException;   }); } catch (e) {   if (e !== BreakException) throw e; }

当然,可能会有更好的方式来获得所需的内容而无需使用此技巧,例如使用.find或.some,但是并非每个技巧都需要成为最佳实践!