Error al modificar un elemento de un array en JavaScript
Analicemos el error que ocurre al modificar incorrectamente un elemento de un array. Supongamos que tenemos el siguiente array:
let arr = [1, 2, 3, 4, 5];
Supongamos también que tenemos una función que toma un número como parámetro y devuelve el cuadrado de ese número:
function func(num) {
return num ** 2;
}
Usemos un bucle for-of
para iterar sobre nuestro array y aplicar nuestra función a cada
uno de sus elementos:
for (let elem of arr) {
elem = func(elem);
}
En este punto, los principiantes a menudo cometen
un error. El problema es que modificar la variable
elem no conduce a un cambio en el elemento
del array en sí. Verifiquemos esto:
console.log(arr); // el array no ha cambiado
El array no cambia porque
la variable elem almacena
una copia del elemento, no una referencia al mismo.
Modificar elem afecta a la copia,
pero no al array original.
Para resolver el problema, debemos modificar precisamente los elementos del array:
for (let i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
console.log(arr); // ahora el array ha cambiado