2016-10-31 2 views
0

Все строки всегда имеют одинаковые номера, почему? Они должны принимать случайное число, чтобы заполнить его. Кроме того, как я могу его восстановить? Однажды я увидел ответ здесь, но теперь я не могу его найти.двухмерный массив случайного генератора jQuery

var mapSizex = 5; 
 
var mapSizey = 6; 
 
var mapArray = []; 
 

 
$(function() { 
 
    console.log("ready!"); 
 
    $('#map-draw').html(drawMap()); 
 
}); 
 

 
function mapGenerator() { 
 
    for (i = 0; i < mapSizex; i++) { 
 
    for (x = 0; x < mapSizey; x++) { 
 
     mapArray[i, x] = getRandom(1, 5); 
 
    } 
 
    } 
 
} 
 

 
function drawMap() { 
 
    mapGenerator(); 
 
    var map = ''; 
 
    tileID = 0; 
 
    for (i = 0; i < mapSizex; i++) { 
 
    map = map + '<br style="clear: both;">'; 
 
    for (x = 0; x < mapSizey; x++) { 
 
     map = map + '<div class="tile tileID' + tileID + '">' + mapArray[i, x] + '</div>'; 
 
     tileID++; 
 
    } 
 
    } 
 
    return map; 
 
} 
 

 
function getRandom(min, max) { 
 
    var x = Math.floor((Math.random() * max) + min); 
 
    return x; 
 
}
.tile { 
 
    float: left; 
 
    height: 20px; 
 
    width: 20px; 
 
    border: 1px solid black; 
 
    text-align: center; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="main-container"> 
 
    <div id="map-container"> 
 
    <div id="map-draw"></div> 
 
    </div> 
 
</div>

Чтобы разместить его нужно добавить еще некоторое содержание, но все включено информация должна быть достаточно, чтобы найти то, что я имею в виду.

+4

одномерные массивы don't работают как это. mapArray [i, x] недействителен, это должен быть mapArray [i] [x] – juvian

+0

Возможный дубликат [Как создать двумерный массив в JavaScript?] (http://stackoverflow.com/questions/966225/how -can-i-create-a-two-array-array-in-javascript) – juvian

+3

В качестве дополнительного примечания ваш синтаксис не будет вызывать ошибку, потому что это допустимое использование [comma operator] (https: // developer .mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Comma_Operator), что объясняет ваши результаты. – ASDFGerte

ответ

2

здесь ссылку на JSFIDDLE WOKING код

Это должно быть mapArray[i][x] и я добавил mapArray[i]=[]; во внешнем контуре.

вот ваш фиксированный код:

var mapSizex=5; 
var mapSizey=6; 
var mapArray=[]; 

$(function() { 
    console.log("ready!"); 
    $('#map-draw').html(drawMap()); 
}); 

function mapGenerator(){ 
    for(i=0;i<mapSizex;i++){ 
    mapArray[i]=[]; 
     for(x=0;x<mapSizey;x++){ 
      mapArray[i][x]= getRandom(1,5); 
     console.log(i,x,getRandom(1,5)) 
     } 
    } 
} 
function drawMap(){ 
    mapGenerator(); 
    console.log(mapArray) 
    var map=''; 
    tileID=0; 
    for(i=0;i<mapSizex;i++){ 
     map=map+'<br style="clear: both;">'; 
     for(x=0;x<mapSizey;x++){ 
      map=map+'<div class="tile tileID'+tileID+'">'+mapArray[i][x]+'</div>'; 
      tileID++; 
     } 
    }return map; 
} 
function getRandom(min,max) { 
    var x = Math.floor((Math.random() * max) + min); 
    return x; 
} 
+0

уже отремонтирован, но спасибо большое! Лучший форум когда-либо :) – BatOOn

+0

mapArray [i] = []; -> Полезно :) хорошо знать. – BatOOn

Смежные вопросы