【发布时间】:2012-09-13 23:46:22
【问题描述】:
我正在用 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) 项的位置传递到我的函数中并进行操作。
【问题讨论】:
-
如果
node = [5,2]然后array[node+1]是array[ [5,2] + 1 ]这没有意义。你确定不是array[node[0]+1] -
这就是我的意思。 :) 抱歉,我无法传达我的意图。
-
数组的长度是否相同?那为什么不 nodex + nodey*LENGTH 呢?
-
数组是多维的。 Nodex + nodey*length 是一种可能性(事实上,我确实使用它),但本质上我的问题是数组项位置是否是一等数据。
标签: javascript algorithm multidimensional-array nodes a-star