Array.prototype.forEach

forEach is such an useful method.

  • Q: How can I break the forEach loop?
  • A: You can’t break forEach.

Example:

var ary = ["JavaScript", "Java", "CoffeeScript", "TypeScript"];

ary.forEach(function(value, index, _ary) {
    console.log(index + ": " + value);
    return false;
});

Output:

0: JavaScript
1: Java
2: CoffeeScript
3: TypeScript

It’s still iterating through all items in the array.
What should I do if I want to stop the loop based on the condition?

It’s simple: Don't use forEach. Use some or every.

Array.prototype.some

some is pretty much the same as forEach but it break when the callback returns true.

var ary = ["JavaScript", "Java", "CoffeeScript", "TypeScript"];

ary.some(function (value, index, _ary) {
    console.log(index + ": " + value);
    return value === "CoffeeScript";
});

Output:

0: JavaScript
1: Java
2: CoffeeScript

Oh? What happened to TypeScript? Since the third iteration returned true, we successfully stopped the loop!

Array.prototype.every

every is almost identical to some except it’s expecting false to break the loop.

var ary = ["JavaScript", "Java", "CoffeeScript", "TypeScript"];

ary.every(function(value, index, _ary) {
    console.log(index + ": " + value);
    return value.indexOf("Script") > -1;
});

Output:

0: JavaScript
1: Java

Since "Java" doesn’t really contain Script in it so the callback for the iteration returned "false". It broke the loop.

Now you can break loops whenever you want! Enjoy.

About The Author