0

我正在用 Javascript 实现 A* 寻路算法的一个版本。为了保持理智,我使用了一个伪多维数组(即嵌套数组)。如果您不熟悉 A*,第一步是检查“开放”节点的周围节点。

如何传递“打开”节点的位置并检查阵列中的相邻节点?阵列位置不应该是一流的吗?

function checknode (node) //Such as [5,2]
{
     if(array[node+1][node]==something) //In this case [6,2]

}

是的,我知道我可以将 x 和 y 坐标作为单独的参数传递,如下所示:

function checknode (nodex, nodey)
{
     if(array[nodex+1][nodey]==something)
}

但是就我的代码而言,这具有的影响是不可取的。

编辑:基本上,我想知道是否可以将数组 (5,2) 项的位置传递到我的函数中并进行操作。

4

2 回答 2

1

您可以创建一个包含两个坐标的复合值(使用对象)。这样您就可以将其作为单个参数传递:

function checknode(node) {
  if (array[node.x + 1][node.y] == something) //In this case [6,2]
}

示例调用:

checknode({ x: 5, y: 2 });
于 2012-09-13T23:56:13.003 回答
0

我不确定你到底想要什么,但看起来你正在传递一个数组。你想要类似的东西吗

function checknode (node) //Such as [5,2]
{
     if( array[ node[0]+1 ][node[1]]==something) //In this case [6,2]

}

因此,如果 node 是一个数组,即 node = [5,2] 此代码将使用“某物”检查数组 [6][2]

于 2012-09-13T23:54:06.683 回答