发布于:2021-01-14 10:15:39
0
856
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,但是并非每个技巧都需要成为最佳实践!
作者介绍