Fejl ved ændring af array-element i JavaScript
Lad os se på fejlen, der opstår ved forkert ændring af et array-element. Antag, at vi har følgende array:
let arr = [1, 2, 3, 4, 5];
Antag også, at vi har en funktion, som tager et tal som parameter og returnerer kvadratet af dette tal:
function func(num) {
return num ** 2;
}
Lad os ved hjælp af en for-of-løkke
gennemløbe vores array og anvende vores funktion på hvert
af dets elementer:
for (let elem of arr) {
elem = func(elem);
}
Det er her, begyndere ofte laver en
fejl. Kernen er, at ændring af variablen
elem ikke fører til ændring af elementet
i selve arrayet. Lad os overbevise os om dette:
console.log(arr); // arrayet ændrede sig ikke
Arrayet ændres ikke, fordi
variablen elem indeholder
en kopi af elementet, og ikke en reference til det.
Ændring af elem påvirker kopien,
men ikke selve arrayet.
For at løse problemet skal man ændre netop arrayets elementer:
for (let i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
console.log(arr); // nu er arrayet ændret