[英]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.