2012-12-10 109 views
0

*請參閱標題。我基本上需要它來創建一個空白數組,可以是任何尺寸像40x60。基本上也許像makeArray(3, 4)這樣的陣列就像這樣:創建具有特定長度和寬度的二維數組

[][][] 
[][][] 
[][][] 
[][][] 
+1

JavaScrip t數組不是固定大小的,所以你通常可以不用預先分配它們。 [什麼有_you_嘗試?](http://whathaveyoutried.com) –

+0

@MattBall我已經看到這樣的問題,但它通常是一個方形數組不是一個指定的X和Y尺寸。 – lawx

+0

這幾乎不相關。 「方陣」就是行==列的特例。 –

回答

6

Javascript數組的大小是動態的。但是,如果你想創建一個特定大小的數組,該Array構造有一個可選長度參數:

function makeArray(d1, d2) { 
    var arr = new Array(d1), i, l; 
    for(i = 0, l = d2; i < l; i++) { 
     arr[i] = new Array(d1); 
    } 
    return arr; 
} 

稍短:

function makeArray(d1, d2) { 
    var arr = []; 
    for(i = 0; i < d2; i++) { 
     arr.push(new Array(d1)); 
    } 
    return arr; 
} 

UPDATE

function makeArray(w, h, val) { 
    var arr = []; 
    for(i = 0; i < h; i++) { 
     arr[i] = []; 
     for(j = 0; j < w; j++) { 
      arr[i][j] = val; 
     } 
    } 
    return arr; 
} 
+0

x長度爲「d1」,y長度爲「d2」? – lawx

+0

是的。 'd1'是數組的'width','d2'是數組的高度(如果有意義的話)。如果你使用它,你可以使用'makeArray(3,4);'(根據你的原始問題)。 – Kyle

+0

非常感謝! – lawx

0

那麼讓Array成爲這樣一個簡單的函數吧

​function makeArray(a,b) { 
     var arr = new Array(a) 
     for(var i = 0;i<a;i++) 
      arr[i] = new Array(b) 
     return arr 
    } 
    console.log(makeArray(4,4)) 

但你不必定義數組與函數,你可以簡單地 這樣做

var arr=[] 
arr[10] = 10 

這將導致有10個元素一個數組,0 - 9 undefined

但在這種情況下,答案足夠了,我試圖在這個關於數組的問題中指出一些事情,如果您有興趣可以看看這個question

相關問題