我有一个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 Os between two Xs vertically');
}
当我运行此代码时,我不断收到以下错误TypeError: Cannot read property '0' of undefined
。是什么导致了这个错误,它到底意味着什么?
根据您的row
值,您可以很容易地访问<例如,如果row === 1
,则在gameBoard[1 + -1 - 1]
处将存在与gameBoard[-1]
相同的接入。
发生此错误是因为您检查的行具有未定义的负索引。在检查gameBoard[row + i][col]
之前,请确保row + i >= 0
。如果它是阴性的,你不需要检查它,因为它不能容纳合适的部分。