In JavaScript wird die Methode forEach() häufig verwendet, um über ein Array zu iterieren und bestimmte Aktionen für jedes Element auszuführen. Versuche, diese Elemente innerhalb der Iterationsschleife zu ändern, führen jedoch häufig dazu, dass die ursprünglichen Werte erhalten bleiben.
Betrachten Sie das folgende Beispiel:
var arr = ["one", "two", "three"]; arr.forEach(function (part) { part = "four"; return "four"; }); alert(arr); // Output: ["one", "two", "three"]
Obwohl dem Teil innerhalb der Schleife „vier“ zugewiesen wurde , das arr-Array bleibt unverändert. Dies liegt daran, dass der forEach()-Rückruf nur eine Kopie jedes Elements empfängt, keinen Verweis auf das ursprüngliche Element.
Um sinnvolle Änderungen zu erzielen, können wir die verwenden Indexparameter, der vom forEach()-Rückruf bereitgestellt wird. Dieser Parameter stellt den Index des aktuellen Elements im Array dar:
arr.forEach(function (part, index, theArray) { theArray[index] = "hello world"; });
In diesem Fall verweist theArray auf das ursprüngliche Array, und wir können über den Indexwert direkt auf seine Elemente zugreifen und diese ändern.
Alternativ können wir den Parameter this des forEach()-Rückrufs als Referenz auf verwenden Array:
arr.forEach(function (part, index) { this[index] = "hello world"; }, arr); // Use arr as this
Indem wir arr als Wert dafür festlegen, stellen wir sicher, dass dieser[Index] auf das richtige Element innerhalb des Arrays verweist.
Während forEach() Iterationen und Modifikationen ermöglicht, gibt es andere Array-Prototypmethoden, die für bestimmte Zwecke möglicherweise besser geeignet sind Fälle:
Durch Auswahl der geeigneten Methode basierend auf Ihrer Aufgabe können Sie dies tun Erzielen Sie eine effiziente und genaue Array-Manipulation.
Das obige ist der detaillierte Inhalt vonWarum ändert das Ändern von Array-Elementen innerhalb einer forEach-Schleife in JavaScript nicht das ursprüngliche Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!