Napaka pri spreminjanju elementa polja v JavaScript
Oglejmo si napako, ki se pojavi pri nepravilni spremembi elementa polja. Recimo, da imamo naslednje polje:
let arr = [1, 2, 3, 4, 5];
Recimo, da imamo tudi funkcijo, ki kot parameter sprejme število in vrne kvadrat tega števila:
function func(num) {
return num ** 2;
}
S pomočjo zanke for-of
iterirajmo skozi naše polje in za vsak
element uporabimo našo funkcijo:
for (let elem of arr) {
elem = func(elem);
}
Na tej točki začetniki pogosto naredijo
napako. Bistvo je v tem, da spreminjanje spremenljivke
elem ne povzroči spremembe elementa
v samem polju. Preverimo:
console.log(arr); // polje se ni spremenilo
Polje se ne spreminja, ker
v spremenljivki elem shrani
kopijo elementa, ne reference nanj.
Spreminjanje elem vpliva na kopijo,
ne pa na samo polje.
Za rešitev problema je treba spreminjati natančno elemente polja:
for (let i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
console.log(arr); // zdaj se je polje spremenilo