patternjavascriptCritical
Short circuit Array.forEach like calling break
Viewed 0 times
shortarraycallinglikebreakforeachcircuit
Problem
[1,2,3].forEach(function(el) {
if(el === 1) break;
});How can I do this using the new
forEach method in JavaScript? I've tried return;, return false; and break. break crashes and return does nothing but continue iteration.Solution
There's no built-in ability to
JavaScript exceptions aren't terribly pretty. A traditional
Use
Instead, use
This works because
break in forEach. To interrupt execution you would have to throw an exception of some sort. eg.var BreakException = {};
try {
[1, 2, 3].forEach(function(el) {
console.log(el);
if (el === 2) throw BreakException;
});
} catch (e) {
if (e !== BreakException) throw e;
}
JavaScript exceptions aren't terribly pretty. A traditional
for loop might be more appropriate if you really need to break inside it.Use
Array#someInstead, use
Array#some:[1, 2, 3].some(function(el) {
console.log(el);
return el === 2;
});
This works because
some returns true as soon as any of the callbacks, executed in array order, return true, short-circuiting the execution of the rest.some, its inverse every (which will stop on a return false), and forEach are all ECMAScript Fifth Edition methods which will need to be added to the Array.prototype on browsers where they're missing.Context
Stack Overflow Q#2641347, score: 2925
Revisions (0)
No revisions yet.