[英]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.