Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript检查数组越界_Javascript_Angularjs_Arrays_Reactjs_Ecmascript 6 - Fatal编程技术网

JavaScript检查数组越界

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++)

我有一个矩阵作为竞技场和一个小矩阵作为玩家。用户可以通过按键四处移动<代码>移动(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 ((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_伙计们,我更新了答案,在
竞技场
保护上提供了更多功能。