gpt4 book ai didi

javascript - 数组副本的变异也会改变原始数组!为什么?

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

我有以下函数将矩阵旋转 90 度,这是代码

function rotateMatrix(array) {
let counter = 0;
let resultArr = array.slice();
let i = 0,
k = 0,
p = 0;
j = array.length - 1;
console.log(array === resultArr); //false


while (counter <= Math.pow(array.length, 2)) {
if (i < array.length) {
resultArr[k][p] = array[i][j];
i++;
p++;
} else {
j--;
k++;
i = 0;
p = 0;
}
}
return resultArr;
}

尽管每当我尝试改变 resultArr 以插入旋转矩阵的值时,我都会创建数组的副本,但当我比较 (resultArr === array) 时,两个数组(resultArr 和 array)都会发生改变它给了我错误。

正如您在这里看到的: Capture of both arrays in the debbuger

有人知道为什么会发生这种情况吗?

最佳答案

如果你想创建一个全新的二维数组,可以使用如下代码:

常量数组=[[1,2],[3,4]],
array2=array.slice().map(el=>el.slice());
console.log(array2==array);//错误的
console.log(array2[0]==array[0]);//错误

常量数组=[[1,2],[3,4]],
array2=Array.from(array).map(el=>Array.from(el));

关于javascript - 数组副本的变异也会改变原始数组!为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61289400/

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