繁体   English   中英

JavaScript中的2D数组中出现意外的值更改

[英]Unexpected value change in 2D array in JavaScript

我正在尝试修改2D数组中的一个值。 但是我发现了一些奇怪的行为,基于数组的构造方式。

矩阵和矩阵2之间的唯一区别在于它们是如何构造的。 但是,当我更改[1] [1]值时,矩阵2中的所有[x] [1]值都会更改:

矩阵:

[ [ 0, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 0 ] ]

Matrix2(意外):

[ [ 0, 1, 0 ], [ 0, 1, 0 ], [ 0, 1, 0 ] ]

码:

var row = [0,0,0];
var matrix = [[0,0,0],[0,0,0],[0,0,0]];
var matrix2 = [row, row, row];
console.log(matrix);
console.log(matrix2);
matrix[1][1] = 1;
matrix2[1][1] = 1;
console.log(matrix);
console.log(matrix2);

谁能解释一下发生了什么?

[row, row, row]

您刚刚创建了一个包含对同一内部数组的三个引用数组。

通过对它的任何引用都可以看到对内部数组的更改。

您想要创建内部数组的三个副本。
您可以通过调用.slice()来创建数组的浅表副本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM