gpt4 book ai didi

javascript - 使用新值更新时出现数组问题

转载 作者:行者123 更新时间:2023-12-02 07:01:20 25 4
gpt4 key购买 nike

收到一个我无法给出原因的问题,

声明了一个变量var arr1 = [2, 3];然后复制到另一个变量 var arr2 = arr1;最后按下 arr2[0] = 1;整个代码看起来像这样,

var arr1 = [2, 3];
var arr2 = arr1;
arr2[0] = 1;
console.log(arr1, arr2);

我们期望的结果是[2, 3] [1, 3] 但意外收到了[1, 3] [1, 3] 即两个数组值已更新。

谁能说说为什么两个数组的结果相同?

最佳答案

arr1 和arr2 是引用(类似于其他语言中的指针)。它们引用相同的 Array 对象。您基本上有两个指向同一个容器的指针。

然后当您尝试获取这两个“指针”指向的容器的内容时​​,它们返回相同的值是有道理的。

如前所述,您可以使用 slice: arr1.slice(0),这应该适用于大多数情况。

在某些情况下你需要一个深拷贝,这里提到了一个例子,当数组包含指向其他对象的指针时需要这样做,因为你几乎得到一个指向其他对象的指针数组,你需要一个更深的拷贝: http://james.padolsey.com/javascript/deep-copying-of-objects-and-arrays/

关于javascript - 使用新值更新时出现数组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20209968/

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