Array 傳入值總是被覆蓋


Posted by Rich on 2021-08-20

我想要準備一個二維陣列。一個由 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 。
所以照理來說這種寫法應該根本不能用,但這又是老師的提示,是不是我漏掉了什麼?


#note







Related Posts

在臺灣與世界做朋友-我在 TourMeAway 的英語導覽經驗回顧

在臺灣與世界做朋友-我在 TourMeAway 的英語導覽經驗回顧

【文件筆記】Redux 官方文件

【文件筆記】Redux 官方文件

Day 1:女媧造人,創造你的主人公吧

Day 1:女媧造人,創造你的主人公吧


Comments