【发布时间】:2013-08-15 16:09:00
【问题描述】:
我正在尝试修改二维数组中的一个值。但是,根据数组的构造方式,我发现了一些奇怪的行为。
matrix 和 matrix2 之间的唯一区别是它们的构造方式。但是,当我更改 [1][1] 值时,matrix2 中的所有 [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);
谁能解释这是怎么回事?
【问题讨论】:
-
matrix2有三个元素,每个元素都指向 same 数组。简单测试:matrix2[0] === matrix2[1]结果为true。 -
好的。感谢您的帮助!
标签: javascript arrays