亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Javascript 多維數組完成列獲取集

Javascript 多維數組完成列獲取集

月關寶盒 2022-09-11 20:14:43
我正在嘗試用爪哇腳本制作一個游戲。游戲板初始化為零填充的 2-D 數組。但是,當我設置單個點的值時,將使用該值設置完整的列。我認為這是我初始化數組的方式的一些問題。方法 1# initializationgameState = Array(6).fill(Array(7).fill(0))# later in the gamegameState[2][4] = 1# results in complete 4th index column to be assigned the value 1, like so -0: (7) [0, 0, 0, 0, 1, 0, 0]1: (7) [0, 0, 0, 0, 1, 0, 0]2: (7) [0, 0, 0, 0, 1, 0, 0]3: (7) [0, 0, 0, 0, 1, 0, 0]4: (7) [0, 0, 0, 0, 1, 0, 0]5: (7) [0, 0, 0, 0, 1, 0, 0]方法 2# initializationlet gameState = [];for (let i=0; i<MAX_ROWS; i++) {    let row = []    for (let j=0; j<MAX_COLUMNS; j++) {       row.push(0)    }    gameState.push(row);}# again similar assignmentgameState[2][4] = 1# results in correct state of the array0: (7) [0, 0, 0, 0, 0, 0, 0]1: (7) [0, 0, 0, 0, 0, 0, 0]2: (7) [0, 0, 0, 0, 1, 0, 0]3: (7) [0, 0, 0, 0, 0, 0, 0]4: (7) [0, 0, 0, 0, 0, 0, 0]5: (7) [0, 0, 0, 0, 0, 0, 0]有人可以解釋我在這里做錯了什么嗎?
查看完整描述

1 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

你的問題很簡單。

Array(6).fill(Array(7).fill(0))

讓我們解釋一下這是做什么的。

Array(6)

創建一個多孔數組,其中包含 6 個項目的空間。

.fill(...)

將用你作為論據的東西填滿這6個洞。

現在問題來了。

在 Javascript 中,在運行函數執行之前計算參數。

這意味著(在這種只運行一次的確切情況下),您的代碼與以下代碼完全相同:.fill(...)

const innerArray = [0,0,0,0,0,0,0];
gameState = Array(6).fill(innerArray);

這意味著它用完全相同的數組實例填充外部數組 6 次。

您需要的是每次都創建單獨的數組。只需執行此操作:

gameState = [...Array(6)].map(() => [...Array(7)].map(() => 0))


查看完整回答
反對 回復 2022-09-11
  • 1 回答
  • 0 關注
  • 85 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號