Napsal jsem řadu blogových příspěvků o tricích s JavaScriptem:triky s příslibem, triky pro konverzi typů, triky s šířením a řadu dalších triků s JavaScriptem. Nedávno jsem narazil na další trik s JavaScriptem, který mi vyšel z hlavy:jak prolomit forEach
smyčka, sdílená Andrea Giammarchi!
Chcete-li porušit forEach
smyčky v libovolném bodě, můžete zkrátit length
pole :
const myArray = [1, 2, 3]; myArray.forEach(item => { // ... do some stuff if(someConditionIsMet) { // Break out of the loop by truncating array myArray.length = 0; } })
Nastavením pole length
až 0
, vyprázdníte pole a okamžitě zastavíte forEach
. Vyprázdněním pole samozřejmě ztratíte původní data, takže možná budete chtít vytvořit pole nové ([...myArray].forEach
) před touto operací.
Dalším způsobem, jak úkol splnit, by bylo vyvolání výjimky:
// 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; }
A samozřejmě bude pravděpodobně existovat lepší způsob, jak získat to, co chcete, aniž byste potřebovali tento trik, jako je použití .find
nebo .some
, ale ne každý trik musí být osvědčeným postupem!