Javascript 检查数组中特定索引处的值?

Javascript 检查数组中特定索引处的值?,javascript,arrays,Javascript,Arrays,我有点麻烦 基本上,我有这个二维数组,它存储具有颜色等的瓷砖基本分区,可以通过这样做来更改特定瓷砖的属性 world[x][y].style blabla somehting 现在,我开始做一些寻路,以便能够在这些瓷砖上行走,假设我有一个10x10的瓷砖网格,坐标范围从-5,-5到5,5 我坐在-5,-5瓷砖上,我点击某个地方开始寻路,我的寻路功能基本上只是找到8个相邻的瓷砖并返回它们,然后我选择一个让我更靠近的瓷砖,我做了X次,直到我击中目标 这是没有问题的,如果我站在中间0,0,尝试去某处

我有点麻烦

基本上,我有这个二维数组,它存储具有颜色等的瓷砖基本分区,可以通过这样做来更改特定瓷砖的属性

world[x][y].style blabla somehting
现在,我开始做一些寻路,以便能够在这些瓷砖上行走,假设我有一个10x10的瓷砖网格,坐标范围从-5,-5到5,5

我坐在-5,-5瓷砖上,我点击某个地方开始寻路,我的寻路功能基本上只是找到8个相邻的瓷砖并返回它们,然后我选择一个让我更靠近的瓷砖,我做了X次,直到我击中目标

这是没有问题的,如果我站在中间0,0,尝试去某处,但因为我在我的世界的角落,我发现一些问题时,搜索相邻的瓷砖; -欧欧欧欧-

-欧欧欧欧-

-欧欧欧欧-

-欧欧欧欧-

-欧欧欧欧-

让我们说这是我的世界,是我的角色,是空荡荡的瓦片,只是一个空荡荡的深渊,一个我无法到达的地方

现在我想去X

-欧欧欧欧-

-欧欧欧欧-

-o o X o o-

-欧欧欧欧-

-欧欧欧欧-

所以我开始我的小寻路算法,但当它从我所在的位置搜索相邻的分片时,它返回一个错误,因为从我的位置没有分片剩余、左+下、左+上或上

-+o o o-

-++o o o-

-欧欧欧欧-

-欧欧欧欧-

-欧欧欧欧-

+是可用的磁贴,但它尝试在我周围搜索更多磁贴,这会导致错误

我试图通过使用来排除不存在的瓷砖

if (world[x][y] !== null) {}
if (world[x][y] != null) {}
if (world[x][y] !== 'undefined') {}
if (world[x][y] != 'undefined') {}
if (!world[x][y]) {}
但是错误是在if语句中给出的,而不是返回的实际平铺

那么,我如何预先检查数组中是否有某个特定索引或2个特定索引


另外请注意,我的数组确实有一些间隙,因为我的世界不仅仅是可行走的平铺。

在检查世界[x][y]之前,您需要验证世界[x]处的行/列


如果您自己在控制台中键入此行:

console.log(typeof x); //output: undefined
在没有定义任何名为“x”的元素的情况下,该语句的计算结果将为“undefined”


然后,您可以在if…else语句中使用typeof来检查未定义的类型,该类型可能是尚不存在的类型。

解决此问题的一个有效方法是将世界变宽一圈12x12,而不是在所有外部瓦片中都有空的深渊标记的10x10。现在,角色将永远不会测试未定义的平铺,并且您的算法将工作。

我建议您在请求平铺之前检查索引x和y。如果您能负担得起要求返回一个磁贴的费用,那么检查哪些方向可以返回一个磁贴似乎不是很难

作为建议,您可以编写一个函数,使用索引值返回实际相邻/相邻的分幅,考虑到-5左侧或+5右侧没有分幅,等等

这意味着并非所有相邻的平铺阵列都具有相同数量的平铺,但您可以轻松地操纵、遍历、知道etc和阵列的长度


如果我有更多关于寻路算法的细节,我也许能够编写示例代码。希望有帮助。

如果世界的类型[x][y]!='未定义的{}
console.log(typeof x); //output: undefined