Cortocircuito Array.forEach como llamar a break
[1,2,3].forEach(function(el) {
if(el === 1) break;
});
¿Cómo puedo hacer esto usando el nuevo método forEach
en JavaScript? He probado con return
, return false
y break
. break
se bloquea y return
no hace nada más que continuar la iteración.
1416
3
No hay una capacidad incorporada para
break
enforEach
. Para interrumpir la ejecución tendrías que lanzar una excepción de algún tipo.Las excepciones en JavaScript no son muy bonitas. Un bucle tradicional
for
podría ser más apropiado si realmente necesitasbreak
dentro de él.Usa
Array#some
En su lugar, utiliza
Array#some
:Esto funciona porque
alguno
devuelvetrue
tan pronto como cualquiera de los callbacks, ejecutados en orden de array, devuelventrue
, cortocircuitando la ejecución del resto.some
, su inversoevery
(que se detendrá en caso deretorno false
), yforEach
son todos métodos de la Quinta Edición de ECMAScript que tendrán que ser añadidos aArray.prototype
en los navegadores donde falten.Considera usar el método
each
dejquery
, ya que permite devolver false dentro de la función callback:Las librerías Lodash también proporcionan el método
takeWhile
que puede ser encadenado con map/reduce/fold etc:Encontré esta solución en otro sitio. Usted puede envolver el forEach en un escenario try / catch.
Más detalles aquí: http://dean.edwards.name/weblog/2006/07/enum/