3 回答

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
因?yàn)槟褂脭?shù)組的 1 個(gè)實(shí)例來填充您的第一個(gè)數(shù)組 (arr)。所以arr[0]和arr[1]實(shí)際上是同一個(gè)實(shí)例,它們指向同一個(gè)地址。如果你想用新數(shù)組填充你的數(shù)組 arr,首先循環(huán)遍歷你的數(shù)組 arr,然后為它們分配新數(shù)組。
const arr = Array(2);
for (let i = 0; i < arr.length; i++) {
arr[i] = Array(2);
}
arr[0][0] = 1;

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊
Array(2)是復(fù)制到arr的每個(gè)元素的空數(shù)組。
但是Array(2)的所有副本都是深層副本。
因此,其中一個(gè)深拷貝的更改將反映在Array(2)的所有副本中。
let arr = Array(2)
arr.fill(Array(2))
arr[0][0]= 1
// [ [ 1, <1 empty item> ], [ 1, <1 empty item> ] ]
arr[0][1] = 2
// [ [ 1, 2 ], [ 1, 2 ] ]

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
文檔說...
用于填充數(shù)組的值。(注意數(shù)組中的所有元素都將是這個(gè)精確值。)
這意味著它們在內(nèi)存中共享相同的地址。
你需要一種不同的方法來填充你的數(shù)組..
let arr = Array.from({length: 2}, e => Array(2))
arr[0][0]=1
console.log(arr);
添加回答
舉報(bào)