我試圖將某些值放入某些二維陣列中,但它附加了不同的值。
這是我的代碼。
const arr = []
const tdArr = []
arr.length = 5
arr.fill('p', 0)
for(let i = 0; i < arr.length; i ){
tdArr.push(arr)
}
const makeRnd = (min, max) => {
min = Math.ceil(min)
max = Math.floor(max)
return Math.floor(Math.random() * (max - min)) min
}
let firstRnd = makeRnd(0, 4)
let secRnd = makeRnd(0, 4)
let tdArr2 = [...tdArr]
tdArr2[firstRnd][secRnd] = 'q'
console.log(tdArr2)
我不知道為什么不(例如)tdArr2[0][1]沒有改變但也改變了陣列的所有第二個值。
這看起來很簡單,但不能谷歌它:(感謝您的幫助!
uj5u.com熱心網友回復:
使用tdArr.push([...arr])在for回圈代替tdArr.push(arr)。
const arr = []
const tdArr = []
arr.length = 5
arr.fill('p', 0)
for(let i = 0; i < arr.length; i ){
tdArr.push([...arr])
}
const makeRnd = (min, max) => {
min = Math.ceil(min)
max = Math.floor(max)
return Math.floor(Math.random() * (max - min)) min
}
let firstRnd = makeRnd(0, 4)
let secRnd = makeRnd(0, 4)
let tdArr2 = [...tdArr]
tdArr2[firstRnd][secRnd] = 'q'
console.log(tdArr2)
uj5u.com熱心網友回復:
正如@Dave Newton 所提到的,tdArr陣列的每個元素都是同一個參考,arr因此當您更改arr所有元素的值時,都會tdArr更改,因為它們都參考同一個陣列。
我會推送一個陣列文字而不是創建一個陣列,然后推送它或創建一個副本,就像上面的答案中提到的那樣,并在每次迭代時推送副本。
tdArr.push(['p']);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/383205.html
標籤:javascript 数组 多维数组
上一篇:使numpy陣列的負值變為正值
下一篇:訪問陣列索引時如何強制打字稿出錯
