首頁 >web前端 >js教程 >為什麼 Array.fill(Array) 在多維數組中透過引用建立副本?

為什麼 Array.fill(Array) 在多維數組中透過引用建立副本?

Barbara Streisand
Barbara Streisand原創
2024-11-29 09:30:11958瀏覽

Why Does Array.fill(Array) Create Copies by Reference in Multidimensional Arrays?

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

使用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.from () 而不是Array.fill():

let m = Array.from({length: 6}, e => Array(12).fill(0));

m[0][0] = 1;
console.log(m[0][0]); // Expecting 1
console.log(m[0][1]); // Expecting 0
console.log(m[1][0]); // Expecting 0

Array.from () 建立可迭代物件的副本(在本例中,具有長度屬性的物件和傳回新陣列的映射函數)。這確保了每個內部數組都是獨立的,對其中一個數組的任何修改都不會影響其他數組。

以上是為什麼 Array.fill(Array) 在多維數組中透過引用建立副本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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