2013-12-15 100 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構造,只需使用數組常量。而且您不能在JavaScript中使用類型聲明,如int i。像這樣的東西是你想要的(從我自己的基於六角形瓷磚的遊戲中獲取):

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