Short circuit Array.forEach like calling break

[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.


  • There's no built-in ability to 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) {
        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#some

    Instead, use Array#some:

    [1, 2, 3].some(function(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.

    Use Array#every

    [1, 2, 3].every(v => {
      if (v > 2) {
        return false // "break"
      return true // must return true if doesn't break