Přerušte smyčku forEach pomocí JavaScriptu

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 length0 , 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!


No