Fehler beim Ändern eines Array-Elements in JavaScript
Lassen Sie uns einen Fehler betrachten, der auftritt, wenn ein Element eines Arrays falsch geändert wird. Nehmen wir an, wir haben das folgende Array:
let arr = [1, 2, 3, 4, 5];
Nehmen wir außerdem an, wir haben eine Funktion, die eine Zahl als Parameter entgegennimmt und das Quadrat dieser Zahl zurückgibt:
function func(num) {
return num ** 2;
}
Lassen Sie uns unser Array mit einer for-of
Schleife durchlaufen und unsere Funktion auf jedes
seiner Elemente anwenden:
for (let elem of arr) {
elem = func(elem);
}
An dieser Stelle machen Anfänger oft einen
Fehler. Die Sache ist die, dass die Änderung der Variable
elem nicht zu einer Änderung des Elements
im Array selbst führt. Überzeugen wir uns davon:
console.log(arr); // Array hat sich nicht geändert
Das Array ändert sich nicht, weil
in der Variable elem eine
Kopie des Elements gespeichert ist, und nicht eine Referenz darauf.
Die Änderung von elem beeinflusst die Kopie,
aber nicht das Array selbst.
Um das Problem zu lösen, müssen genau die Elemente des Arrays geändert werden:
for (let i = 0; i < arr.length; i++) {
arr[i] = func(arr[i]);
}
console.log(arr); // jetzt hat sich das Array geändert