0

I have found a couple other similar threads on stackoverflow (Pass Array Thread 2) and (Pass Array Thread 1) as well as from a few other sites but I either did not understand them, they did not fully answer my question, or I did not know how to implement it into my code.

I have the following code which should create a map for a game based on some arrays:

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();
}

and the variable arrays (incomplete but you get the idea):

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'];

My problem is that I call in

createMap('map_beginning_1')

and nothing happens. There's no errors but nothing else happens. I did a test to see what it was getting and the value of "level[7]" is "i" and "level1" is "a", which is the location of the characters in "map_beginning_1". Can someone please explain to me how to or if it's even possible to variably pass an array through a Javascript function argument and how to do it? And if it isn't possible, can you suggest any alternatives for what I'm trying to do? Javascript is preferable but I can use Jquery if I must.

Community
  • 1
  • 1
Timble
  • 499
  • 4
  • 15

2 Answers2

2

Try createMap(map_beginning_1). Lose the ' (quotes), as you are trying to pass an array but are actually passing a string.

Soubhik Mondal
  • 2,666
  • 1
  • 13
  • 19
2

You have passed a string into the function and not a variable please try the following, removing the single quotes.

createMap(map_beginning_1);
Dave Norm
  • 185
  • 8
  • Thanks, I feel silly that I didn't notice this. It worked :) I'll accept your answer in 10 minutes when I can. – Timble Jun 07 '16 at 03:21