Lyhyt piiri Array.forEach kuten kutsuminen break
[1,2,3].forEach(function(el) {
if(el === 1) break;
});
Miten voin tehdä tämän käyttämällä uutta forEach
-metodia JavaScriptissä? Olen kokeillut return;
, return false;
ja break
. break
kaatuu ja return
ei tee mitään muuta kuin jatkaa iteraatiota.
1416
3
forEach
-ohjelmassa ei ole sisäänrakennettua kykyäbreak
:iin. Keskeyttääksesi suorituksen sinun pitäisi heittää jonkinlainen poikkeus. esim.JavaScriptin poikkeukset eivät ole kauhean kauniita. Perinteinen
for
-silmukka voisi olla sopivampi, jos todella haluatbreak
sen sisällä.Käytä
Array#some
Käytä sen sijaan
Array#some
:Tämä toimii, koska
some
palauttaatrue
heti, kun jokin array-järjestyksessä suoritettavista callbackeista palauttaatrue
, jolloin loput suoritetaan oikosulussa.some
, sen käänteismetodievery
(joka pysähtyy, kunpalautuu false
) jaforEach
ovat kaikki ECMAScript Fifth Editionin metodeja, jotka on lisättäväArray.prototype
:iin selaimissa, joissa ne puuttuvat.Harkitse
jquery
'neach
-metodin käyttöä, koska sen avulla voit palauttaa väärän arvon callback-funktion sisällä:Lodash-kirjastot tarjoavat myös [
takeWhile
]-metodin1, joka voidaan ketjuttaa map/reduce/fold jne. kanssa:Löysin tämän ratkaisun toiselta sivustolta. Voit kietoa forEachin try/ catch-skenaarioon.
Lisätietoja täältä: http://dean.edwards.name/weblog/2006/07/enum/