Tengo un bucle foreach angular y quiero romper el bucle si coincido con un valor. El siguiente código no funciona.
angular.forEach([0,1,2], function(count){
if(count == 1){
break;
}
});
Cómo puedo conseguir esto?
angularjs
javascript-framework
Gordito chico
fuente
fuente
Respuestas:
No hay forma de hacer esto. Ver https://github.com/angular/angular.js/issues/263 . Dependiendo de lo que esté haciendo, puede usar un booleano para no entrar en el cuerpo del bucle. Algo como:
fuente
!keepGoing && return;
a la parte superior de la función, menos código.El
angular.forEach
bucle no puede romperse en una coincidencia de condición.Mi consejo personal es usar un bucle NATIVE FOR en lugar de
angular.forEach
.El bucle NATIVE FOR es aproximadamente un 90% más rápido que otro para los bucles.
USO PARA lazo en ANGULAR:
fuente
utilice algunas o todas las instancias de ForEach,
Ejemplo para algunos:
Ejemplo para cada:
Encuentre más información
http://www.jsnoob.com/2013/11/26/how-to-break-the-foreach/
fuente
Utilice la matriz algún método
Existe devolverá verdadero, y puede usar esto como una variable en su función
Arreglar algún método - Javascript
fuente
angular.forEach()
es que tengo que soportar IE8, que no tieneArray.forEach()
... oArray.some()
.Hasta donde yo sé, Angular no proporciona esa función. Es posible que desee utilizar la
find()
función de subrayado para esto (es básicamente un forEach que se sale del bucle una vez que la función devuelve verdadero).http://underscorejs.org/#find
fuente
Si usa jQuery (por lo tanto, no jqLite) junto con AngularJS, puede iterar con $ .each, lo que permite dividir y continuar según la expresión de valor de retorno booleano.
JSFiddle:
http://jsfiddle.net/JEcD2/1/
Javascript:
Nota:
Aunque el uso de jQuery no es malo, MDN recomienda tanto las funciones nativas Array.some como Array.Cada una de las siguientes :
MDN proporciona los siguientes ejemplos:
Array.some:
Array.every:
fuente
Concretamente, puede salir de un
forEach
bucle, y de cualquier lugar, lanzar una excepción.Sin embargo, es mejor si usa otra biblioteca o implementa su propia función, una
find
función en este caso, por lo que su código es de alto nivel.fuente
Intenta esto como descanso;
fuente
Como dicen las otras respuestas, Angular no proporciona esta funcionalidad. Sin embargo, jQuery sí lo hace, y si ha cargado jQuery y Angular, puede usar
Ver http://api.jquery.com/jquery.each/
fuente
Normalmente no hay forma de romper un "cada" bucle en javascript. Lo que se puede hacer generalmente es usar el método de "cortocircuito".
fuente
break
no es posible lograrlo en angular para cada uno, necesitamos modificar for cada para hacer eso.fuente
break()
es necesario definirlo o si ya forma parte de angular. Por favor defina si no.Puedes usar esto:
fuente
fuente
fuente
Preferiría hacer esto a cambio. Coloque la parte de bucle en la función privada y regrese cuando desee romper el bucle.
fuente
Me doy cuenta de que esto es antiguo, pero un filtro de matriz puede hacer lo que necesita:
Luego puede ejecutar
arr.forEach
y otras funciones de matriz.Me doy cuenta de que si tiene la intención de reducir por completo las operaciones de bucle, esto probablemente no hará lo que desea. Para eso mejor uso
while
.fuente
Este ejemplo funciona. Intentalo.
fuente
for
bucle, su caso de uso necesita unforeach
nofor
probablementeUse Retorno para romper el ciclo.
fuente
fuente
Yo usaría en
return
lugar debreak
.Funciona de maravilla.
fuente
Simplemente agregue $ index y haga lo siguiente:
fuente