首頁 >web前端 >js教程 >為什麼 Array.fill(Array) 在 JavaScript 中透過引用建立副本,如何避免這種情況?

為什麼 Array.fill(Array) 在 JavaScript 中透過引用建立副本,如何避免這種情況?

DDD
DDD原創
2024-11-28 15:38:12347瀏覽

Why Does Array.fill(Array) Create Copies by Reference in JavaScript, and How Can This Be Avoided?

Array.fill(Array) 在 JavaScript 中透過引用建立副本

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn