let numCallbackRuns = 0;
    
    arraySparse.forEach((element) => {
      console.log({ element });
      numCallbackRuns++;
    });
    
    console.log({ numCallbackRuns });
    
    // { element: 1 }
    // { element: 3 }
    // { element: 7 }
    // { numCallbackRuns: 3 }
    

The callback function is not invoked for the missing value at index 2.

###  Calling forEach() on non-array objects

The ` forEach() ` method reads the ` length ` property of ` this ` and then
accesses each property whose key is a nonnegative integer less than ` length `
.

js

    
    
    const arrayLike = {
      length: 3,
      0: 2,
      1: 3,
      2: 4,
      3: 5, // ignored by forEach() since length is 3
    };
    Array.prototype.forEach.call(arrayLike, (x) => console.log(x));
    // 2
    // 3
    // 4
    

##  Specifications

Specification  
---  
[ ECMAScript Language Specification  
#  sec-array.prototype.foreach  ](https://tc39.es/ecma262/multipage/indexed-
collections.html#sec-array.prototype.foreach)  
  
##  Browser compatibility

BCD tables only load in the browser  with JavaScript enabled. Enable
JavaScript to view data.

##  See also

  * [ Polyfill of ` Array.prototype.forEach ` in ` core-js ` ](https://github.com/zloirock/core-js#ecmascript-array)
  * [ Indexed collections ](/en-US/docs/Web/JavaScript/Guide/Indexed_collections) guide 
  * [ ` Array ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)
  * [ ` Array.prototype.find() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)
  * [ ` Array.prototype.map() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)
  * [ ` Array.prototype.filter() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)
  * [ ` Array.prototype.every() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every)
  * [ ` Array.prototype.some() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)
  * [ ` TypedArray.prototype.forEach() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/forEach)
  * [ ` Map.prototype.forEach() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach)
  * [ ` Set.prototype.forEach() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/forEach)

##  Help improve MDN

Was this page helpful to you?

Yes  No

[ Learn how to contribute
](https://github.com/mdn/content/blob/main/CONTRIBUTING.md "This will take you
to our contribution guidelines on GitHub.") .

This page was last modified on  Dec 16, 2023  by  [ MDN contributors ](/en-
US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach/contributors.txt)
.

[ View this page on GitHub
](https://github.com/mdn/content/blob/main/files/en-
us/web/javascript/reference/global_objects/array/foreach/index.md?plain=1
"Folder: en-us/web/javascript/reference/global_objects/array/foreach \(Opens
in a new tab\)") â¢  [ Report a problem with this content
](https://github.com/mdn/content/issues/new?template=page-report.yml&mdn-
url=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-
US%2Fdocs%2FWeb%2FJavaScript%2FReference%2FGlobal_Objects%2FArray%2FforEach&metadata=%3C%21--+Do+not+make+changes+below+this+line+--%3E%0A%3Cdetails%3E%0A%3Csummary%3EPage+report+details%3C%2Fsummary%3E%0A%0A*+Folder%3A+%60en-
us%2Fweb%2Fjavascript%2Freference%2Fglobal_objects%2Farray%2Fforeach%60%0A*+MDN+URL%3A+https%3A%2F%2Fdeveloper.mozilla.org%2Fen-
US%2Fdocs%2FWeb%2FJavaScript%2FReference%2FGlobal_Objects%2FArray%2FforEach%0A*+GitHub+URL%3A+https%3A%2F%2Fgithub.com%2Fmdn%2Fcontent%2Fblob%2Fmain%2Ffiles%2Fen-
us%2Fweb%2Fjavascript%2Freference%2Fglobal_objects%2Farray%2Fforeach%2Findex.md%0A*+Last+commit%3A+https%3A%2F%2Fgithub.com%2Fmdn%2Fcontent%2Fcommit%2Ffc2a42e76b198a48458a20a49b54683027279ace%0A*+Document+last+modified%3A+2023-12-16T03%3A15%3A18.000Z%0A%0A%3C%2Fdetails%3E
"This will take you to GitHub to file a new issue.")

[ MDN logo  ](/)

Your blueprint for a better internet.

  * [ MDN on Mastodon  ](https://mozilla.social/@mdn)