[英]TypeError when iterating through a list, javascript
我連續打了一個快速的小四場比賽,我一遍又一遍地出錯。 我一直在尋找一段時間現在嘗試的東西,我仍然不明白為什么這個代碼(對不起,糟糕的代碼順便說一句):
var player = 0;
var gameOver = false;
var FinalMes = document.getElementById("gameOver");
var feild = [
["_", "_", "_", "_", "_", "_", "_", "_", "_"],
["_", "_", "_", "_", "_", "_", "_", "_", "_"],
["_", "_", "_", "_", "_", "_", "_", "_", "_"],
["_", "_", "_", "_", "_", "_", "_", "_", "_"],
["_", "_", "_", "_", "_", "_", "_", "_", "_"],
["_", "_", "_", "_", "_", "_", "_", "_", "_"],
];
for (i = 0; i < 3; i++) {
for (j = 0; j < 6; i++) {
if (
feild[i][j] == 1 &&
feild[i + 1][j + 1] == 1 &&
feild[i + 2][j + 2] == 1 &&
feild[i + 3][j + 3] == 1
) {
f.hidden = true;
gameOver = true;
FinalMes.innerHTML = `Spelare ${player} vann!`;
}
}
}
給出這個錯誤:
Uncaught TypeError TypeError: Cannot read properties of undefined (reading '3')
在線:
feild[i+3][j+3] == 1
一個問題是您的最內層循環正在增加與外層循環相同的計數器,即:
更改: for (j = 0; j < 6; i++) {
為: for (j = 0; j < 6; j++) {
另一個問題是您將讀取不在數組中的索引,除非數組在片段之外的其他地方被修改。
假設我們處於循環的最后一次迭代中
聲明: feild[i+3][j+3]
將等於: feild[6][9]
並且這似乎是代碼段中不在數組中的索引
希望這可以幫助:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.