Angular JS Break ForEach
Answer :
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 true Array.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/
Comments
Post a Comment