Tömbelem módosítási hiba JavaScriptben
Nézzük meg a hibát, amely a tömb elemeinek helytelen módosítása során lép fel. Tegyük fel, hogy a következő tömbünk van:
let arr = [1, 2, 3, 4, 5];
Tegyük fel, hogy van egy függvényünk is, amely paraméterként egy számot vesz fel és visszaadja a szám négyzetét:
function func(num) {
return num ** 2;
}
Használjunk for-of ciklust
a tömbünk bejárására, és alkalmazzuk
a függvényt minden elemére:
for (let elem of arr) {
elem = func(elem);
}
Ezen a ponton szoktak a kezdők hibázni.
A helyzet az, hogy a elem változó
módosítása nem vezet a tömb megfelelő
elemének módosulásához. Győződjünk meg erről:
console.log(arr); // a tömb nem változott
A tömb azért nem módosul,
mert a elem változó
az elem másolatát tartalmazza,
nem pedig egy hivatkozást rá.
A elem módosítása a másolatot érinti,
de magát a tömböt nem.
A probléma megoldásához magukat a tömb elemeit kell módosítani:
for (let i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
console.log(arr); // most már a tömb megváltozott