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