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