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;

Array.prototype.forEach.call(parent.children, child => {
console.log(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 => {
console.log(child);
});

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

const parent = this.el.parentElement;

for (const child of parent.children) {
console.log(child);
}

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

Edit:

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:

Array.prototype.forEach.call(trList, 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:

element.childNodes.forEach(replaceText);

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

Array.from(element.childNodes).forEach(replaceText);

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,

Object.keys(jBookedDates).forEach(function(jB){
if (jB=="11/01/2016") {
console.log("works");
} else {
console.log("doesn't");
}
});

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

Object.keys(jBookedDates).forEach(function(jB){
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]);

...

guardian:guardians

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



Submit