在游戏网格中检查垂直匹配时发生TypeError

TypeError when checking vertical matches in game grid

本文关键字:TypeError 垂直 游戏网 游戏 网格 检查      更新时间:2023-12-30

我有一个13x13多维数组,我正试图使用以下函数检查垂直匹配:

function verticalMatch(row, col){
  for(var i = -1; i <= 1; i++) {
  if (gameBoard[row + i][col]==="O" && gameBoard[row + i + 1][col] === "O"
      && gameBoard[row +i-1][col] === "X" && gameBoard[row +i+2][col] === "X" ||
      gameBoard[row + i][col]==="O" && gameBoard[row + i - 1][col] === "O" 
      && gameBoard[row +i-2][col] === "X" && gameBoard[row +i+1][col] === "X"){
    return true;
   }
  }
 return false;       
}

我测试这个功能是这样的:

if(verticalMatch(x,y)===true){
        console.log('Two O's between two X's vertically');
 }

当我运行此代码时,我不断收到以下错误TypeError: Cannot read property '0' of undefined。是什么导致了这个错误,它到底意味着什么?

根据您的row值,您可以很容易地访问<例如,如果row === 1,则在gameBoard[1 + -1 - 1]处将存在与gameBoard[-1]相同的接入。

发生此错误是因为您检查的行具有未定义的负索引。在检查gameBoard[row + i][col]之前,请确保row + i >= 0。如果它是阴性的,你不需要检查它,因为它不能容纳合适的部分。