JavaScript 中的Array.fill():引用與值的警示故事
Array.fill() 是一種使用的JavaScript方法用指定值填滿數組。但是,重要的是要了解 Array.fill() 對引用而不是值進行操作。
問題:引用與值
考慮以下程式碼:
let m = Array(6).fill(Array(12).fill(0)); m[0][0] = 1; console.log(m[1][0]); // Outputs 1 instead of 0
這裡,我們使用 Array.fill() 建立一個 6x12 矩陣。然而,當我們將 m0 設定為 1 時,m1 意外地也變成 1。這是因為 Array.fill() 所建立的內部陣列都引用同一個 Array 物件。
預期行為:值
我們可能不想引用,而是複製值。換句話說,更改 m0 不應影響 m1。
解:使用Array.from()
強制Array.fill() 複製值而不是引用,我們可以使用Array.from() 如下:
let m = Array.from({length: 6}, e => Array(12).fill(0)); m[0][0] = 1; console.log(m[1][0]); // Outputs 0 as expected
Array.from()確保每個內部數組都是不同的
結論
使用 Array.fill() 時,請注意引用和值之間的區別。對於您想要複製值而不是引用的情況,請考慮使用 Array.from() 來代替。
以上是為什麼 JavaScript 的 `Array.fill()` 會建立參考而不是副本,我該如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!