新人求问,向控制台输出数组为什么不是当前的数据?

generate_Matrixs(){

    let genMatrixs=[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25]];                                    //生成的数组

    console.log(genMatrixs);  

   

    this.roatSqMatrix(genMatrixs,false);                                    //旋转方块数组

    console.log(genMatrixs);                                    

}

genMatrixs是一个二维数组,roatSqMatrix是旋转数组的函数。在以上代码里 两次
console.log(genMatrixs)输出的内容是一样的,都是旋转后的数据,请大神看看是啥原因。

数组是引用类型,打印内容并不是打印的时候决定的,具体内容取决于你打印后有没有修改这个数组里面的内容
const arr1 = [[1,2, 3], [4, 5, 6]]
console.log(arr1)
arr1[0][0] = 10
// 打印后的数据就是 [[10, 2, 3],[4, 5, 6]]
// 想要正确打印,可以这样,相当于拷贝了一个新的数组出来
console.log([[…arr1[0]], […arr1[1]])

1赞

谢谢。可是我在node环境,使用了同样的代码,旋转前后打印内容是不同的。难道浏览器环境和node环境对数组的打印处理不同吗?

node环境打印的不是引用地址,是直接展开后的数组。浏览器环境打印的是引用地址,你需要手动点一下展开,当你点开的时候,它才去获取数组的内容,这个时候数组的值已经改变了

1赞

明白了,谢谢!