Ruptura angular JS para cada uno
Tengo un bucle foreach angular y quiero salir del 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?
El angular.forEach
bucle no puede romperse si una condición coincide.
Mi consejo personal es utilizar un bucle FOR NATIVO en lugar de angular.forEach
.
El bucle FOR NATIVO es alrededor de un 90% más rápido que otros bucles for.
UTILICE EL bucle FOR EN ANGULAR:
var numbers = [0, 1, 2, 3, 4, 5];
for (var i = 0, len = numbers.length; i < len; i++) {
if (numbers[i] === 1) {
console.log('Loop is going to break.');
break;
}
console.log('Loop will continue.');
}
No hay manera de hacer esto. Consulte https://github.com/angular/angular.js/issues/263 . Dependiendo de lo que estés haciendo, puedes usar un valor booleano para no entrar en el cuerpo del bucle. Algo como:
var keepGoing = true;
angular.forEach([0,1,2], function(count){
if(keepGoing) {
if(count == 1){
keepGoing = false;
}
}
});
utilice algunas o todas las instancias de ForEach,
Array.prototype.some:
some is much the same as forEach but it break when the callback returns true
Array.prototype.every:
every is almost identical to some except it's expecting false to break the loop.
Ejemplo para algunos:
var ary = ["JavaScript", "Java", "CoffeeScript", "TypeScript"];
ary.some(function (value, index, _ary) {
console.log(index + ": " + value);
return value === "JavaScript";
});
Ejemplo para cada:
var ary = ["JavaScript", "Java", "CoffeeScript", "TypeScript"];
ary.every(function(value, index, _ary) {
console.log(index + ": " + value);
return value.indexOf("Script") > -1;
});
Encuentre más información
http://www.jsnoob.com/2013/11/26/how-to-break-the-foreach/