簡體   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