我只想更改第一行中的第一列,但它不起作用。
想要的輸出是 [[1,0],[0,0]],但我得到的是 [[1,0],[1,0]]
我想知道為什么會發生這種情況,如果我想對不同的索引進行更改,有什么解決方案?
let matrix = [];
let row = [0, 0];
for (i = 0; i < 2; i ) {
matrix.push(row);
}
matrix[0][0] = 1;
console.log(matrix);
uj5u.com熱心網友回復:
問題是,您將同一個物件 ( row)推入matrix兩次。row使用擴展運算子復制例如,或Array.slice():
let matrix = [];
let row = [0, 0];
for (i = 0; i < 2; i ) {
matrix.push([...row]);
}
matrix[0][0] = 1;
console.log(matrix);
uj5u.com熱心網友回復:
row推入矩陣陣列的變數指向相同的記憶體位置。因此,此變數的任何更新都將反映在任何地方。每次推送都需要新建一個
let matrix = [];
for (let i = 0; i < 2; i ) {
let row = [0, 0];
matrix.push(row);
}
matrix[0][0] = 1;
console.log(matrix);
uj5u.com熱心網友回復:
要么只是推送一個新陣列:
matrix.push([0,0])
或者您可以使用擴展運算子:
matrix.push([...row])
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/363927.html
標籤:javascript
上一篇:我想簡化(使用Object.assign)一批JSON檔案
下一篇:JavaScript查找:如果物件鍵存在于另一個物件陣列中,則更新陣列中物件的值,類似于excel中的v-lookup
