Foreach Is Not a Function Error With JavaScript Array

forEach is not a function error with JavaScript array

First option: invoke forEach indirectly

The parent.children is an Array like object. Use the following solution:

const parent = this.el.parentElement;, child => {

The parent.children is NodeList type, which is an Array like object because:

  • It contains the length property, which indicates the number of nodes
  • Each node is a property value with numeric name, starting from 0: {0: NodeObject, 1: NodeObject, length: 2, ...}

See more details in this article.

Second option: use the iterable protocol

parent.children is an HTMLCollection: which implements the iterable protocol. In an ES2015 environment, you can use the HTMLCollection with any construction that accepts iterables.

Use HTMLCollection with the spread operatator:

const parent = this.el.parentElement;

[...parent.children].forEach(child => {

Or with the for..of cycle (which is my preferred option):

const parent = this.el.parentElement;

for (const child of parent.children) {

Uncaught TypeError: forEach is not a function error in javascript function


Use a for loop like this:

for (var i = 0; i < trList.length; i++) { ... }

and inside of it replace tr with trList[i]

You might need to remove one ) that was ending the opening parenthesis of the forEach loop you just replaced.

Original answer:

Try changing the fourth line in your code with this:, function (tr, i) {

TypeError: element.forEach is not a function

Elements don't have a forEach method. (Neither does the hasChildNodes function that they have.) They aren't arrays or NodeLists.

On modern browsers, element.childNodes has forEach because it's a NodeList and a couple of years ago they got forEach (and iterability), so:


On older browsers that haven't added that yet, you can use Array.from to get a true array, then use forEach:


Or you can polyfill it on NodeList, as I show in this other answer.

TypeError: [1, 2, 3].foreach is not a function

change foreach to forEach

(function() {    'use strict';
document.addEventListener( 'DOMContentLoaded', function() {
[1,2,3].forEach( function (pic_num) { console.log(pic_num); } );
}); // DOMContentLoaded

forEach is not a function error

The response that you are receiving is a JSON. You can't use an array object's method forEach over a plain object. You have to use Object.keys() at this context to retrieve the enumerable own properties belongs to the parsed JSON,

if (jB=="11/01/2016") {
} else {

For your query in the comment, you can use bracket notation to access those arrays,

var arr = jBookedDates[jB];
console.log(arr); //will print the array belongs to each property.

.forEach is not a function node JS

var guardians = JSON.stringify(result[0]);



guardians is a string, not an array, so it won't have a forEach method.

Probably you want to pass result in, not guardians

Related Topics

Leave a reply