Home > Software engineering >  JavaScript forEach: mutate elements
JavaScript forEach: mutate elements

Time:10-05

I want to use forEach on an array. Since forEach is a mutator, it should mutate the values in the original array, but it's not. What's the issue here?

let array = [1, 2, 3, 4]; //simple array declaration

array.forEach((ele) => ele * 2); //using forEach to double each element in "array"

console.log(array); //logs [1,2,3,4] instead of [1,4,6,8]

What's going on here?

CodePudding user response:

No, forEach does not mutate the original array.

You can achieve what you are looking for by giving a second parameter of index, then updating the values of the original array.

let array = [1, 2, 3, 4];
array.forEach((ele, index) => array[index] = ele * 2);

console.log(array);

documentation for forEach

CodePudding user response:

Array#forEach callback has second and third optional parameters that you can use to access and mutate each element:

index [Optional]: The index of element in the array.

array [Optional]: The array forEach() was called upon.

const array = [1, 2, 3, 4];

array.forEach((_, index, arr) => arr[index] *= 2);

console.log(array);

  • Related