在 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 指的是原始數組,我們可以直接使用索引值來存取和修改其元素。
或者,我們可以使用forEach() 回呼的this 參數作為對array:
arr.forEach(function (part, index) { this[index] = "hello world"; }, arr); // Use arr as this
透過將arr 設定為this 的值,我們確保this[index] 指向陣列中的正確元素。
雖然forEach() 允許迭代和修改,但還有其他數組原型方法可能更適合特定用途case:
根據您的任務選擇合適的方法,您可以實現高效、準確的陣列操作。
以上是為什麼在 JavaScript 的 forEach 迴圈中修改陣列元素不會改變原始陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!