Errore nella modifica di un elemento dell'array in JavaScript
Analizziamo l'errore che si verifica quando si modifica in modo errato un elemento dell'array. Supponiamo di avere il seguente array:
let arr = [1, 2, 3, 4, 5];
Supponiamo inoltre di avere una funzione che accetta un numero come parametro e restituisce il quadrato di quel numero:
function func(num) {
return num ** 2;
}
Utilizziamo un ciclo for-of
per iterare attraverso il nostro array e applichiamo
la nostra funzione a ciascuno dei suoi elementi:
for (let elem of arr) {
elem = func(elem);
}
È qui che i principianti spesso commettono
un errore. Il fatto è che la modifica della variabile
elem non porta alla modifica dell'elemento
nell'array stesso. Verifichiamolo:
console.log(arr); // l'array non è cambiato
L'array non cambia perché
la variabile elem contiene
una copia dell'elemento, non un riferimento ad esso.
La modifica di elem influisce sulla copia,
ma non sull'array stesso.
Per risolvere il problema, è necessario modificare proprio gli elementi dell'array:
for (let i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
console.log(arr); // ora l'array è cambiato