在 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中文网其他相关文章!