使用 forEach 方法迭代数组时,经常会遇到想要修改数组元素的情况。但是,尝试直接在回调中分配新值并不总是会影响原始数组。
考虑以下代码:
var arr = ["one", "two", "three"]; arr.forEach(function(part) { part = "four"; return "four"; }) alert(arr); // Output: "one,two,three"
尽管在回调中赋值,原始数组 arr 返回其原始值。发生这种情况是因为 forEach 为回调函数创建了数组元素的浅表副本。
要从 forEach 迭代中修改数组元素,我们需要将原始数组传递为一个附加参数。这允许我们在回调中直接访问和修改数组本身:
arr.forEach(function(part, index, theArray) { theArray[index] = "hello world"; });
通过使用Array[index],我们可以覆盖原始数组元素。
或者,我们可以使用 forEach 的第二个参数在回调中设置 this 值。通过将其设置为原始数组,我们可以使用 this[index] 直接修改元素:
arr.forEach(function(part, index) { this[index] = "hello world"; }, arr); // Use arr as this
两种方法都允许在迭代期间修改数组元素。两者之间的选择取决于偏好。
值得一提的是,forEach 是数组原型提供的几个数组实用程序之一。其他常用的实用程序包括:
以上是如何在 forEach 循环中修改数组值?的详细内容。更多信息请关注PHP中文网其他相关文章!