如何通过Javascript函数参数传递数组

时间:2016-06-07 03:14:56

标签: javascript arrays

我在stackoverflow(Pass Array Thread 2)和(Pass Array Thread 1)以及其他几个网站上找到了其他类似的线程,但我要么不理解它们,他们没有完全回答我的问题,或者我不知道如何在我的代码中实现它。

我有以下代码,应根据某些数组创建游戏地图:

function createMap(level) {
   var map = document.getElementById('map');
   mapWidth = parseInt(level[0]);
   mapHeight = parseInt(level[1]);
   map.innerHTML = '';
   rowNumber = 1;
   tileID = 1;
   var consoleHelp = level[7];
   console.log(k+' and value is '+consoleHelp);
   k = 1;
for (k = 1; k <= mapHeight; k++) { // repeat below loop until specified height is reached
 for (k = 1; k <= mapWidth; k++) { // create a row of tiles based on the specified width of the array
    console.log('Row '+k+' created')
    if (rowNumber == 1) {
        k++;
    }
    else {
        k--;
    }
    if (level[k] == 'w') {
        map.innerHTML += '<span id="'+rowNumber+'-'+tileID+'">desert<image class="tiles" src="desert.png"></span>';
    }
    else if (level[k] == 'g') {
        map.innerHTML += '<span id="'+rowNumber+'-'+tileID+'"><image class="tiles" src="grass.png"></span>';
    }
    else {
        console.log('crap dis did not work');
        var consoleHelp = level[k];
        console.log(k+' and value is '+consoleHelp);
    }
    if (rowNumber == 1) {
        k--;
    }
    else {
    k++;
    }
    tileID++
  }
  rowNumber++
  level = level + '_1';
  map.innerHTML = "<br>";
}
spawnTile();
}

和变量数组(不完整但你明白了):

var map_beginning_1 =         ['20','10','w','w','w','w','w','w','w','w','w','w','w','w','w','w','w','w','w','w','w','w'];
var map_beginning_1_1 =                 ['w','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','g','w'];

我的问题是我打电话

createMap('map_beginning_1')

没有任何反应。没有错误,但没有其他事情发生。我做了一个测试,看看它得到了什么,“level [7]”的值是“i”,“level 1”是“a”,这是“map_beginning_1”中字符的位置。有人可以向我解释如何甚至可以通过Javascript函数参数可变地传递数组以及如何做到这一点?如果不可能,你能为我想做的事情提出任何替代方案吗? Javascript是可取的,但如果必须,我可以使用Jquery。

2 个答案:

答案 0 :(得分:2)

试试createMap(map_beginning_1)。丢失'(引号),因为您尝试传递数组但实际上传递的是字符串。

答案 1 :(得分:2)

您已将字符串传递给函数而不是变量请尝试以下操作,删除单引号。

createMap(map_beginning_1);