用JavaScript打破forEach循环

JavaScript forEach forEach循环
2021-01-14 10:15:39
446 21 0

我写了许多有关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,但是并非每个技巧都需要成为最佳实践!

作者介绍

用微信扫一扫

收藏