[英]How to mutate original array in Javascript .map() function?
[英]Why does this map function not mutate the values in the original array?
这是有问题的代码:
const array = [
1, 2, 3
]
array.map(item => {
item = item + 1
})
console.log(array)
我以为map
方法中的item
(第一个)参数是对数组中原始项目的引用,并且直接对其进行更改会更改该第一个数组的内容……不是吗?
您的数组包含基本类型元素(此处为整数)。 基本类型的变量不能通过其引用进行突变。 例如,如果数组的元素是对象,则可以进行突变,如下所示:
var array = [{val: 1}, {val: 2}, {val: 3}]; array.map(item => {item.val = item.val + 1}); console.log(array);
Mozilla说;
map()方法创建一个新数组,并在调用数组中的每个元素上调用提供的函数。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map
因此,map函数不会使数组的值发生变化。
我知道您不想这样做,但是您可以使用以下命令:
const array = [ 1, 2, 3 ] array.map((item, k) => { array[k] = item + 1 }) console.log(array)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.