Heim >Web-Frontend >js-Tutorial >Warum ändert das Ändern von Array-Elementen innerhalb einer forEach-Schleife in JavaScript nicht das ursprüngliche Array?

Warum ändert das Ändern von Array-Elementen innerhalb einer forEach-Schleife in JavaScript nicht das ursprüngliche Array?

DDD
DDDOriginal
2024-11-30 22:25:14985Durchsuche

Why does modifying array elements within a forEach loop in JavaScript not change the original array?

Ändern von Array-Werten während der Iteration

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.

Elemente mit Array-Index ändern

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.

Verwendung des Parameters this

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.

Das richtige Werkzeug auswählen

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:

  • forEach: Iteriert über jedes Element und führt eine Aktion aus, ändert jedoch nicht das Array.
  • filter: Erstellt ein neues Array, das nur Elemente enthält, die eine bestimmte Bedingung erfüllen.
  • map: Erstellt eine neue Array, indem jedes Element gemäß einer bestimmten Funktion transformiert wird.
  • some: Überprüft, ob mindestens ein Element im Array eine Bedingung erfüllt.
  • jedes: Überprüft, ob alle Elemente im Array eine Bedingung erfüllen.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn