Feil ved endring av array-element i JavaScript
La oss se på en feil som oppstår ved feil endring av et array-element. La oss si vi har følgende array:
let arr = [1, 2, 3, 4, 5];
La oss også si at vi har en funksjon som tar imot et tall som parameter og returnerer kvadratet av dette tallet:
function func(num) {
return num ** 2;
}
La oss bruke en for-of-løkke
til å iterere gjennom arrayet vårt og
anvende funksjonen vår på hvert
av dets elementer:
for (let elem of arr) {
elem = func(elem);
}
Det er på dette punktet nybegynnere ofte gjør en
feil. Saken er at endring av variabelen
elem ikke fører til endring av elementet
i selve arrayet. La oss bekrefte dette:
console.log(arr); // arrayet er ikke endret
Arrayet endres ikke fordi
variabelen elem inneholder
en kopi av elementet, ikke en referanse til det.
Endring av elem påvirker kopien,
men ikke selve arrayet.
For å løse problemet må man endre nettopp elementene i arrayet:
for (let i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
console.log(arr); // nå er arrayet endret