Array.fill() 是用特定值填入陣列的有用方法。但是,當用於在數組中建立數組時,它會產生引用問題。
考慮以下範例:
let m = Array(6).fill(Array(12).fill(0));
此程式碼嘗試建立 6x12 矩陣,其中每個元素都是 0然而,內部陣列都引用同一個陣列物件。
To 。說明:
m[0][0] = 1; console.log(m[1][0]); // Outputs 1 instead of 0
上面的程式碼輸出 1,而不是 0,因為對一個元素的變更會影響引用相同陣列物件的所有其他元素。
要按值建立副本,一種解決方案是使用Array.from() 取代:
let m = Array.from({length: 6}, e => Array(12).fill(0));
此語法為外部數組中的每個元素建立新數組,結果為true按值複製行為。
以上是為什麼 Array.fill(Array) 在 JavaScript 中透過引用建立副本,如何避免這種情況?的詳細內容。更多資訊請關注PHP中文網其他相關文章!