JavaScript检查数组越界
我有一个矩阵作为竞技场和一个小矩阵作为玩家。用户可以通过按键四处移动<代码>移动(pos)接受参数和内部检查JavaScript检查数组越界,javascript,angularjs,arrays,reactjs,ecmascript-6,Javascript,Angularjs,Arrays,Reactjs,Ecmascript 6,我有一个矩阵作为竞技场和一个小矩阵作为玩家。用户可以通过按键四处移动移动(pos)接受参数和内部检查 if(pos=="down") if (!collide(pos)) player.pos.y++; collide的工作原理是 if(pos=="down") for (i = 0; i < player.matrix.length; i++) { for (j = 0; j < player.matrix[i].length; j++)
if(pos=="down")
if (!collide(pos)) player.pos.y++;
collide的工作原理是
if(pos=="down")
for (i = 0; i < player.matrix.length; i++)
{
for (j = 0; j < player.matrix[i].length; j++)
{
if ((player.matrix[i][j] && arena[player.pos.y + i + 1][player.pos.x + j]) != 0) result = true;
}
}
if(位置==“向下”)
对于(i=0;i
在你来到竞技场之前,这道菜都很完美。当您到达边缘时,由于没有长度+1索引,如果检测到
无法读取“”未定义的属性。我首先尝试检查typeof index out of bound==undefined,但即使这样也会出现同样的错误。然后我尝试了try catch,但是catch中的下一个函数卡在第一个函数和它本身之间。有什么办法可以找到一个简单的结帐方法吗?我的建议就是保护竞技场[player.pos.y+i+1][player.pos.x+j]
按长度比较通话:
for (i = 0; i < player.matrix.length; i++)
{
for (j = 0; j < player.matrix[i].length; j++)
{ // here we have an additional protection of arena dimensions
if(player.pos.y + i + 1 < arena.length && player.pos.x + j < arena[player.pos.y + i + 1].length)
{
if ((player.matrix[i][j] && arena[player.pos.y + i + 1][player.pos.x + j]) != 0)
result = true;
}
}
}
诸如此类
for (i = 0; i < player.matrix.length; i++)
for (j = 0; j < player.matrix[i].length; j++)
if(player.matrix[i][j] && arena.isValid(player.pos.y + i + 1, player.pos.x + j))
result = true;
for(i=0;i
我的建议只是保护竞技场[player.pos.y+i+1][player.pos.x+j]
按长度比较通话:
for (i = 0; i < player.matrix.length; i++)
{
for (j = 0; j < player.matrix[i].length; j++)
{ // here we have an additional protection of arena dimensions
if(player.pos.y + i + 1 < arena.length && player.pos.x + j < arena[player.pos.y + i + 1].length)
{
if ((player.matrix[i][j] && arena[player.pos.y + i + 1][player.pos.x + j]) != 0)
result = true;
}
}
}
诸如此类
for (i = 0; i < player.matrix.length; i++)
for (j = 0; j < player.matrix[i].length; j++)
if(player.matrix[i][j] && arena.isValid(player.pos.y + i + 1, player.pos.x + j))
result = true;
for(i=0;i
if语句的第一个条件可以检查是否存在索引有问题的项。例如:if(项[索引]&&&…)
。将发生的情况是,在第一个条件下,任何不存在的项都将立即为false。@snapjs如何获得未定义项,而不是无法读取未定义项的属性“number”?我需要强制它返回一些东西,而不是抛出错误。if语句的第一个条件可以检查是否存在索引有问题的项。例如:if(项[索引]&&&…)
。将发生的情况是,在第一个条件下,任何不存在的项都将立即为false。@snapjs如何获得未定义项,而不是无法读取未定义项的属性“number”?我需要强迫它归还东西,而不是扔东西error@hello_guys我更新了答案,在竞技场
保护上提供了更多功能。@hello_伙计们,我更新了答案,在竞技场
保护上提供了更多功能。