Angular JS break ForEach
The angular.forEach
loop can't break on a condition match.
My personal advice is to use a NATIVE FOR loop instead of angular.forEach
.
The NATIVE FOR loop is around 90% faster then other for loops.
USE FOR loop IN 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.');}
There's no way to do this. See https://github.com/angular/angular.js/issues/263. Depending on what you're doing you can use a boolean to just not going into the body of the loop. Something like:
var keepGoing = true;angular.forEach([0,1,2], function(count){ if(keepGoing) { if(count == 1){ keepGoing = false; } }});
please use some or every instances of ForEach,
Array.prototype.some:some is much the same as forEach but it break when the callback returns trueArray.prototype.every:every is almost identical to some except it's expecting false to break the loop.
Example for some:
var ary = ["JavaScript", "Java", "CoffeeScript", "TypeScript"];ary.some(function (value, index, _ary) { console.log(index + ": " + value); return value === "JavaScript";});
Example for every:
var ary = ["JavaScript", "Java", "CoffeeScript", "TypeScript"];ary.every(function(value, index, _ary) { console.log(index + ": " + value); return value.indexOf("Script") > -1;});
Find more information
http://www.jsnoob.com/2013/11/26/how-to-break-the-foreach/