无法在函数javascript中传递数组

时间:2014-05-15 17:10:54

标签: javascript arrays

我正在学习javascript,我想在一个函数中填充一个数组,并将其作为参数传递给第二个函数。我有以下代码但由于某种原因它无法正常工作。

function gameplay(tmp) {
    for (var i = 0; i < tmp.length; i++) {
        if (xTrans >= tmp[0] - 1
            && xTrans < tmp[0]
            && zTrans <= tmp[1] - 1
            && zTrans > tmp[1])
        {
            //some code here
        }
    }
}

function fillMap() {
    var bounds = new Array();
    for (var y = 0; y < map.length; y++) {
        for (var x = 0; x < map[0].length; x++) {
            if (map[y][x] == '1') {
                bounds[length] = 4 * x;
                length++;
                bounds[length] = -y - 4 * y;
                length++;
            }
        }
    }
    return bounds;
}

我打电话是这样的:

var tmp = fillMap();
gameplay(tmp);

提前致谢..

2 个答案:

答案 0 :(得分:1)

您可能想要尝试这一点,以确认当您有明确而明显的输入时会发生什么:

function fillMap() {
var map = [[0]];

这应该给你输出:[4,-5]

一些潜在的问题

  • 地图未在任何地方定义
  • 长度未在任何地方定义
  • xTrans未在任何地方定义
  • zTrans未在任何地方定义
  • 根据我的看法,似乎不太可能满足if条件:

    xTrans >= tmp[0]-1 && xTrans < tmp[0] // translates to if xTrans == tmp[0] - 1

其他一些想法

  • 您最好使用bounds.push代替bounds[length] = $val
  • for(var y=0; y<map.length ;y++) { for(var x=0; x<map[0].length ;x++) {会像var yLen = map.length; var xLen = map[0].length; for(var y=0; y<yLen ;y++) { for(var x=0; x<xLen ;x++) {
  • 更安全/更快
  • bounds[length] = -y - 4 * ybounds[length] = -5 * y;
  • 相同

答案 1 :(得分:0)

从你的评论看来,似乎没有填充数组,因为你有一些条件来填充数组。 所以首先要检查你的状况是否充满。