JavaScript-for循环没有正确分配x和y

JavaScript-for循环没有正确分配x和y,javascript,jquery,html,path-finding,Javascript,Jquery,Html,Path Finding,我正在一个简单的JavaScript 2D(画布)游戏中使用。我把我的比赛打成了一场比赛。无论如何,我的游戏是15列,10行 问题出在哪里?设置图表时,我正确设置了节点(或者我认为是这样),在for循环中使用一个简单的for循环来设置一个15跨10下的板 因此,当我加载页面时,会出现以下错误:uncaughttypeerror:无法读取未定义的属性“5” 这是从这一行start=graph.nodes[12][5](来自下面的SSCCE),如果更改5(Y),则错误中的数字将更改 这是我的SSCC

我正在一个简单的JavaScript 2D(画布)游戏中使用。我把我的比赛打成了一场比赛。无论如何,我的游戏是15列,10行

问题出在哪里?设置图表时,我正确设置了
节点
(或者我认为是这样),在
for
循环中使用一个简单的
for
循环来设置一个15跨10下的板

因此,当我加载页面时,会出现以下错误:
uncaughttypeerror:无法读取未定义的属性“5”

这是从这一行
start=graph.nodes[12][5](来自下面的
SSCCE
),如果更改
5
Y
),则错误中的数字将更改

这是我的
SSCCE

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>    
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type='text/javascript' src='graphstar.js'></script>
<script type="text/javascript">
    var board;
</script>
<script type='text/javascript' src='astar.js'></script>
<script type="text/javascript">
    $(document).ready(function()
{
        // UP to DOWN - 10 Tiles (Y)
        // LEFT to RIGHT - 15 Tiles (X)
        graph = new Graph([
        [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 
        [1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1], 
        [1, 13, 1, 13, 13, 13, 13, 13, 1, 1, 1, 1, 1, 13, 13, 1], 
        [1, 13, 1, 1, 13, 1, 1, 13, 1, 13, 13, 1, 13, 13, 13, 1], 
        [1, 13, 13, 1, 1, 1, 13, 13, 1, 13, 13, 1, 1, 1, 13, 1], 
        [1, 13, 13, 1, 13, 1, 13, 13, 13, 13, 13, 1, 13, 13, 13, 1], 
        [1, 13, 13, 13, 13, 1, 13, 13, 13, 13, 13, 1, 13, 13, 13, 1], 
        [1, 13, 1, 13, 13, 13, 13, 13, 1, 1, 1, 1, 13, 13, 13, 1], 
        [1, 13, 1, 1, 1, 1, 13, 13, 13, 13, 1, 13, 13, 13, 13, 1], 
        [1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1], 
        [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
        ]);
        //Let's do an example test.
        start = graph.nodes[12][5]; // X: 12, Y: 5
        end = graph.nodes[2][4]; // X: 2, Y: 4
        result = astar.search(graph.nodes, start, end);
    });
</script>
</head>
<body>
Loading... pathfinding. Look in Chrome Console/Firefox Firebug for more information.
</body>
</html>
如您所见,
for
循环是通过查看
网格的长度来完成的<代码>网格
长度应输出到
11
,这是正确的,因为我们首先循环
Y
轴。然后通过
长度输出
16
,这是正确的,因为我们正在做
X

因此,当我启动页面时,会出现以下错误:


所以。。。我想我把它画对了,但是我的
X
Y
仍然没有定义。

你在循环中的条件从一开始就是错误的,所以它甚至从未进入第一个循环,应该是

for(var y = 0; y < len; ++y){
编辑3:

问题可能是因为所有其他代码都将坐标视为x,y,这里是循环,并将它们存储为y,x如果您像这样更改代码,它应该允许您使用x,y保留所有其他代码

function Graph(grid) {
    var nodes = [];

    var row, len = grid.length;
    for (var y = 0; y < len; ++y) {
        row = grid[y];
        var rowLength = row.length; // Expected: 16;

        for (var x = 0; x < rowLength; ++x) {
        if(!nodes[x]){      
                nodes[x] = new Array(len);
        }
            nodes[x][y] = row[x];

        }
    }

    this.input = grid;
    this.nodes = nodes;
}
函数图(网格){
var节点=[];
变量行,len=grid.length;
对于(变量y=0;y
行=网格[x]
?不是
row=grid[y]
?遗憾的是,这并没有带来什么不同。还是同样的错误\好吧,我改成你说的,你是对的。。但是,我运行它,得到了以下错误
uncaughttypeerror:无法读取未定义的属性“length”
导致该行的原因:
rowLength=row.length所以我看到我没有指定原因,我有
row=grid[x]而非
行=网格[y]
所以我更改了它,得到了
未捕获的TypeError:无法读取未定义的属性“5”
第二个for循环与第一个循环有相同的问题,我将把我得到的函数放在answerHm中。所以我这样做了,我必须切换
开始
结束
节点的
x
s和
y
,然后我做了这个
结果。长度
=
0
。我不交换这些节点中的
x
y
。。。我得到这个
Uncaught类型错误:无法读取未定义的
的属性“5”,或者无论
start
节点上的
Y
是什么,它都可以工作。但是用我的测试例子<代码>控制台.log(“结果长度:+Result.length”)=
0
。好吧。谢谢
function Graph(grid) {
    var nodes = [];

    var row, len = grid.length;
    console.log(len);
    for (var y = 0; y < len; ++y) {
        console.log(y);
        row = grid[y];
        console.log(row);
        var rowLength = row.length; // Expected: 16;
        nodes[y] = new Array(len);
        for (var x = 0; x < rowLength; ++x) {

            nodes[y][x] = row[x];
            console.log(nodes);

        }
    }

    this.input = grid;
    this.nodes = nodes;
}
function Graph(grid) {
    var nodes = [];

    var row, len = grid.length;
    for (var y = 0; y < len; ++y) {
        row = grid[y];
        var rowLength = row.length; // Expected: 16;

        for (var x = 0; x < rowLength; ++x) {
        if(!nodes[x]){      
                nodes[x] = new Array(len);
        }
            nodes[x][y] = row[x];

        }
    }

    this.input = grid;
    this.nodes = nodes;
}