2013-12-15 2 views
0

Я пытаюсь выяснить, как создать многомерный массив с фиксированными размерами.Многомерные массивы Javascript с фиксированным размером

This переполнение стека потока говорит, трехмерный массив может быть сделано следующим образом:

var arrayName = new Array(new Array(new Array())); 

и this учебник сказал одномерный массив фиксированной длины может быть создан следующим образом:

var varname = new Array(3); 

Я не уверен, как сделать многомерный массив фиксированного размера (я создаю его для создания шестиугольной сетки). Я думаю, что вы должны сделать, это что-то вроде этого:

var hexgrid_radius = 20; 

var array1 = new Array(hexgrid_radius); 

for(int i = 0; i < array1.length; i++) { 

    var array2 = new Array(hexgrid_radius); 
    array1[i] = array2; 

    for(int j = 0; j < array2.length; j++) { 

     var array3 = new Array(hexgrid_radius); 
     array2[j] = array3; 
    } 
} 

ответ

1

Не используйте Array конструктор, просто использовать литералы массивов. И вы не можете использовать объявления типа, такие как int i в JavaScript. Что-то вроде этого - то, что вы хотите (взято из моей собственной игры на основе гекс-плитки):

var size = 20; 
var grid = []; 
for (var row = 0; row < size; row++) { 
    grid[ row ] = []; 
    for (var col = 0; col < size; col++) { 
    grid[ row ][ col ] = new HexTile(row, col); 
    } 
} 
+0

Не все же динамические массивы? Их размер увеличивается только по мере необходимости, чтобы вставлять в более крупный индекс. Я думаю, нет причин, по которым я не мог бы использовать динамические массивы, но я думал, что считается хорошей практикой использовать массивы фиксированного размера, когда вы можете, и вы знаете, что размер массива не изменится. – user244145

+1

У JavaScript есть только динамические массивы. Попробуйте следующее: 'var array = new Array (10); array.pop(); console.log (array.length); // 9' – sbking

+0

Если вам нужна какая-то структура данных, которая действительно действует как массив фиксированного размера, вам необходимо обернуть массив объектом, который обрабатывает массив для вас. Не делай этого; вам действительно не нужно это для этого случая. Похоже, вы исходите из языка со статической типизацией, массивами с фиксированной длиной и т. Д. У JavaScript нет этих понятий - переменные динамически типизируются, а массивы динамически велики. – sbking

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