• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Justin Joyce

Practical tips and tutorials about software development.

  • Standing Invitation
  • Featured Posts
  • Latest
  • About

Javascript forEach

Posted Mar 13, 2023 โ€” Updated Jan 10, 2024

Javascript’s forEach method is one of its basic array methods, and it’s used all the time. It does as its name suggests, and performs a function for each element of an array:

const myList = ["a", "b", "c"];
myList.forEach(item => console.log(item));
// "a"
// "b"
// "c"

In the function above, I only accessed one argument, item. However, forEach actually makes 3 arguments available to its callback function if you want them:

const myList = ["a", "b", "c"];
myList.forEach((item, index, list) => {
    console.log(item, index, list);
});

// "a", 0, ["a", "b", "c"]
// "b", 1, ["a", "b", "c"]
// "c", 2, ["a", "b", "c"]

ForEach cannot be stopped early

This is the major gotcha with forEach: it will always call your function once per array element, it cannot be stopped. Put another way, you cannot break a forEach. Consider this case, where you want to abort a for loop early:

const myList = ["a", "b", "c"];

// a traditional for loop can be broken early
for (let item of myList) {
    console.log(item);
    if (item === "a") {
        console.log("a found, terminating loop");
        break;
    }
}
// "a"
// "a found, terminating loop"

If you use forEach, you can’t stop the loop:

const myList = ["a", "b", "c"];
myList.forEach((item) => {
    console.log(item);
    if (item === "a") {
        console.log("a found, terminating loop");
        return;
    }
});
// "a"
// "a found, terminating loop"
// "b"
// "c"

Other notes about forEach

ForEach is not designed for use with async functions, even if you properly declare it as async and use await within the function body. This isn’t too surprising given how javascript generally handles async operations, but it is strange to see async / await not having their intended effects. For a full example of this behavior and a few more potential gotchas, check out the Moz docs page for forEach.

Filed Under: Arrays, Javascript

Primary Sidebar

Recent Posts

  • Every Built-In Vim Color Scheme (with screenshots)
  • Reverse a string in Python
  • Meeting Cost Calculator
  • Vim find and replace
  • What makes an effective development team

Categories

  • Arrays (5)
  • Command Line (9)
  • Dates (3)
  • Featured (7)
  • Git (7)
  • Golang (5)
  • Javascript (8)
  • Productivity (8)
  • Projects (4)
  • Python (15)
  • Regex (2)
  • Ruby (3)
  • Shell (2)
  • Thoughts (2)
  • Tips (11)
  • Tools (3)
  • Tutorials (1)
  • Vim (4)

Archives

  • July 2024 (1)
  • February 2024 (1)
  • January 2024 (1)
  • December 2023 (1)
  • November 2023 (1)
  • October 2023 (4)
  • September 2023 (1)
  • August 2023 (2)
  • July 2023 (5)
  • June 2023 (3)
  • May 2023 (6)
  • April 2023 (5)
  • March 2023 (5)
  • February 2023 (10)
  • January 2023 (6)
  • December 2022 (7)

Copyright © 2025 ยท Contact me at justin [at] {this domain}

  • Privacy Policy