發(fā)布于:2021-01-14 10:15:39
0
914
0
我寫了許多有關(guān)JavaScript技巧的博客文章:Promise技巧,類型轉(zhuǎn)換技巧,傳播技巧以及許多其他JavaScript技巧。最近,我遇到了另一個(gè)讓我大吃一驚的JavaScript技巧:如何打破forEach循環(huán)!
要forEach隨時(shí)中斷循環(huán),可以截?cái)鄶?shù)組的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; } })
通過將數(shù)組設(shè)置length為0,可以清空數(shù)組并立即停止forEach。當(dāng)然,清空陣列會(huì)丟失其原始數(shù)據(jù),因此您可能需要[...myArray].forEach在執(zhí)行此操作之前創(chuàng)建一個(gè)新的陣列()。
完成任務(wù)的另一種方法是拋出異常:
// 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; }
當(dāng)然,可能會(huì)有更好的方式來獲得所需的內(nèi)容而無需使用此技巧,例如使用.find或.some,但是并非每個(gè)技巧都需要成為最佳實(shí)踐!
作者介紹