首頁 > web前端 > js教程 > 為什麼在 JavaScript 的 forEach 迴圈中修改陣列元素不會改變原始陣列?

為什麼在 JavaScript 的 forEach 迴圈中修改陣列元素不會改變原始陣列?

DDD
發布: 2024-11-30 22:25:14
原創
982 人瀏覽過

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

在迭代期間修改數組值

在 JavaScript 中,forEach() 方法通常用於迭代數組並對每個元素執行某些操作。然而,嘗試在迭代循環中修改這些元素通常會導致原始值被保留。

考慮以下範例:

var arr = ["one", "two", "three"];

arr.forEach(function (part) {
  part = "four";
  return "four";
});

alert(arr); // Output: ["one", "two", "three"]
登入後複製

儘管在循環中將「4」分配給部分,arr 陣列保持不變。這是因為 forEach() 回呼僅接收每個元素的副本,而不是對原始元素的參考。

使用陣列索引來修改元素

要實現有意義的修改,我們可以利用forEach() 回呼提供的索引參數。此參數代表數組中目前元素的索引:

arr.forEach(function (part, index, theArray) {
  theArray[index] = "hello world";
});
登入後複製

在這種情況下,theArray 指的是原始數組,我們可以直接使用索引值來存取和修改其元素。

使用this 參數

或者,我們可以使用forEach() 回呼的this 參數作為對array:

arr.forEach(function (part, index) {
  this[index] = "hello world";
}, arr); // Use arr as this
登入後複製

透過將arr 設定為this 的值,我們確保this[index] 指向陣列中的正確元素。

選擇正確的工具

雖然forEach() 允許迭代和修改,但還有其他數組原型方法可能更適合特定用途case:

  • forEach:迭代每個元素並執行操作,但不修改陣列。
  • filter:建立一個僅包含滿足特定條件的元素的新陣列
  • map:透過根據給定函數轉換每個元素來建立一個新數組。
  • some:檢查是否至少有一個元素數組中滿足條件。
  • every:檢查是否全部陣列中的元素滿足條件。

根據您的任務選擇合適的方法,您可以實現高效、準確的陣列操作。

以上是為什麼在 JavaScript 的 forEach 迴圈中修改陣列元素不會改變原始陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板