gpt4 book ai didi

javascript - 为什么在React中未定义此数组?

转载 作者:行者123 更新时间:2023-12-02 06:12:44 25 4
gpt4 key购买 nike

我具有以下代码,用于在扫雷游戏中设置地雷,但在plantMines()函数中始终出现错误,“TypeError:data [randomx] undefined ”。我是React的新手,所以也许我缺少一些简单的东西,但是我只是看不出问题出在哪里。

initBoardData(height, width, mines) {
let data = this.createEmptyArray(height, width);
data = this.plantMines(data, height, width, mines);
return data;
}

// Create array of grid
createEmptyArray(height, width) {
let data = [];

for (let i = 0; i < height; i++) {
data.push([]);
for (let j = 0; j < width; j++) {
data[i][j] = {
x: i,
y: j,
isMine: false,
neighbour: 0,
isRevealed: false,
isEmpty: false,
isFlagged: false
};
}
}
return data;
}

// Place mines on board
plantMines(data, height, width, mines) {
let randomx, randomy, minesPlanted = 0;

while (minesPlanted < mines) {
randomx = this.getRandomNumber(width);
randomy = this.getRandomNumber(height);

if (!(data[randomx][randomy].isMine)) { //--ERROR ON THIS LINE
data[randomx][randomy].isMine = true;
minesPlanted++;
}
}
return (data);
}

getRandomNumber(dimension) {
return Math.floor((Math.random() * 1000) + 1 % dimension);
}

编辑:codesandbox- https://codesandbox.io/s/minesweeper-luono?file=/src/Board.js

最佳答案

您在getRandomNumber中有错误-缺少括号:

getRandomNumber(dimension) {
return Math.floor(((Math.random() * 1000) + 1) % dimension);
}

但是,还有一个问题,也使用@dellink提出的解决方案:
randomx = this.getRandomNumber(height);
randomy = this.getRandomNumber(width);

您必须同时更改 ,这样它才能开始工作!!

关于javascript - 为什么在React中未定义此数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61319740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com