Manas Dixit
Manas Dixit

Reputation: 103

JavaScript forEach: mutate elements

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?

Upvotes: 8

Views: 5494

Answers (2)

Majed Badawi
Majed Badawi

Reputation: 28434

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);

Upvotes: 2

ahsan
ahsan

Reputation: 1504

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

Upvotes: 7

Related Questions