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