Fel vid ändring av arrayelement i JavaScript
Låt oss titta på ett fel som uppstår vid felaktig ändring av ett arrayelement. Låt oss säga att vi har följande array:
let arr = [1, 2, 3, 4, 5];
Låt oss också säga att vi har en funktion som tar ett nummer som parameter och returnerar kvadraten på det numret:
function func(num) {
return num ** 2;
}
Låt oss använda en for-of loop
för att iterera genom vår array och applicera vår funktion på varje
av dess element:
for (let elem of arr) {
elem = func(elem);
}
Här är det vanligt att nybörjare gör
ett misstag. Anledningen är att ändring av variabeln
elem inte leder till en ändring av elementet
i själva arrayen. Låt oss verifiera detta:
console.log(arr); // arrayen förändrades inte
Arrayen ändras inte på grund av att
variabeln elem innehåller
en kopia av elementet, inte en referens till det.
Att ändra elem påverkar kopian,
men inte själva arrayen.
För att lösa problemet måste man ändra just arrayelementen:
for (let i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
console.log(arr); // nu har arrayen ändrats