我想要準備一個二維陣列。一個由 null 組成的陣列。假設是要一個 3x3 的陣列。
let arr = Array(19).fill(Array(19).fill(null))
之後可能做一些修改
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
arr[i][j] = {
position: [i, j],
content: "",
});
}
}
預期是 arr 裡面每個 position 會是 [[[0,0],[0,1],[0,2]],[[1,0]...]...]。
但是結果會是 [[[2,0],[2,1],[2,2]],[[2,0],[2,1],[2,2]...]...]。
值被覆蓋了!
應該早點看 MDN,裡面就有詳細講到,如果裡面放物件的話,會把他進行複製並傳入陣列中。此例中雖然是傳入陣列,但還是發生了一樣的問題。
所以如果我 arr[0][0] = 1
的時候,arr[1][0] arr[2][0]
都會變成 1 。
所以照理來說這種寫法應該根本不能用,但這又是老師的提示,是不是我漏掉了什麼?