gpt4 book ai didi

Javascript 数组正在与另一个分配的数组同步

转载 作者:行者123 更新时间:2023-11-28 18:12:51 26 4
gpt4 key购买 nike

我一直在绞尽脑汁试图找出为什么这些阵列在我将一个阵列分配给另一个阵列后会同步。输出应该是“1,2,3,4”,但实际上是“5,6,7,8”。我需要以不同的方式复制数组吗?

var firstArray = [1, 2, 3, 4];
var secondArray = [5, 6, 7, 8];

for (i = 0; i < firstArray.length; i++) {
var myTempArray = firstArray;
myTempArray[i] = secondArray[i];
}
console.log("Result: " + firstArray);

预期输出:

Result: 1,2,3,4

实际输出:

Result: 5,6,7,8

如何在不更改第一个数组的情况下更改第二个数组?

最佳答案

数组是可变对象。所以它们只包含引用文献。您需要“复制”数组才能进行复制,而不仅仅是像原始对象那样进行分配。要复制数组,有多种方法。一种最好的方法是:

myTempArray = firstArray.slice();

您正在做的是浅拷贝:

此外,另一个大问题是,循环内有数组赋值,这会导致 myTempArray 发生变化。您需要将其从循环中取出。您的最终代码应如下所示:

var firstArray = [1, 2, 3, 4];
var secondArray = [5, 6, 7, 8];

var myTempArray = firstArray.slice();
for (i = 0; i < firstArray.length; i++) {
myTempArray[i] = secondArray[i];
}
console.log("Result: " + firstArray);

关于Javascript 数组正在与另一个分配的数组同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41294360/

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