gpt4 book ai didi

javascript - 数组方法 'map' 修改调用它的数组?

转载 作者:行者123 更新时间:2023-11-29 21:59:40 26 4
gpt4 key购买 nike

在 JavaScript 中,我正在使用数组方法“map”并观察到它正在修改调用它的数组。但是我看的文档应该不是这样吧?

“请注意 map() 返回一个新数组:它不会修改调用它的数组”- JavaScript - 权威指南第 6 版。

var arr = [{x:1},{y:2},{z:3}]

var arr1 = arr.map(function(obj) {
for (var prp in obj) {
obj[prp] *= obj[prp];
}
return obj;
})

// function to print the array
printArray = function(arr) {
for (var i = 0; i < arr.length; i++) {
for (prp in arr[i]) {
console.log(prp, arr[i][prp])
}
}
}

输出

printArray(arr1)
x 1
y 4
z 9


printArray(arr)
x 1
y 4
z 9

我们可以看到原始数组 'arr' 也被修改了吗?

最佳答案

您拥有的数据结构称为数组,其中包含对象。对象是可变的。因此,您可以更改对象的值。在您的情况下,您正在对对象的值进行平方并将结果存储回原始对象本身并返回相同的对象。因此,map 创建了一个包含相同对象的新数组。

要明确一点,数组是新的,但新数组中的对象与原始数组中的对象相同。

关于javascript - 数组方法 'map' 修改调用它的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24523973/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com