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



我在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","level1"是"a",这是"map_beginning_1"中字符的位置。有人能向我解释一下如何或者是否可以通过Javascript函数参数可变地传递数组,以及如何做到这一点吗?如果这不可能,你能为我尝试做的事情提出任何替代方案吗?Javascript更可取,但如果必须的话,我可以使用Jquery。

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

createMap(map_beginning_1);

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

最新更新