2017-01-31 32 views
0

我定義了二維數組,試圖將它填充到嵌套循環中,但它只填充第一個維的正確值,其他維填充null(或未定義),謝謝。Javascript數組變爲空

var Arr = []; 
var i =0; 

for(i=0;i<13;i++) 
{ 
    Arr[i]=[]; 
} 

var a=0,b=0; 

for(a=0;a<13;a++) 
{ 
    for(b=0;b<13;b++) 
    { 
    Arr[[a][b]]=AnotherArrWithRightValues[(13 * a) + b]; 
    } 
} 
+3

你嘗試'編曲[A] [B] = AnotherArrWithRightValues [ (13 * a)+ b];' –

+4

不是'Arr [a] [b]'? –

+3

你有一個語法錯誤: Arr [a] [b] = AnotherArrWithRightValues [(13 * a)+ b]; – Loksly

回答

1

Arr[[a][b]]應該Arr[a][b]

+0

@Mohsen如何? – deceze

+0

@Mohsen_Fatemi真的!怎麼樣?這個Arr [[a] [b]]是語法錯誤! – challenger

+0

@Mohsen_Fatemi這就是預期的 – Huntro

0

爲了記錄,另一種方式來實現相同的:

var Arr = []; 
var i = 0, tmp; 
var a, b; 

for(a = 0; a < 13; a++){ 
    tmp = []; 
    for(b = 0; b < 13; b++){ 
     tmp.push(AnotherArrWithRightValues[i++]); 
    } 
    Arr.push(tmp); 
} 
1

Loksly的答案是正確的,但以不同的方式來實現。要回答您的問題,請將Arr[[a][b]]替換爲Arr[a][b]


全碼:

var Arr = []; 

for(var a = 0 ; a < 13 ; a++) { 
    Arr[a] = []; 
    for(var b = 0 ; b < 13 ; b++) { 
    Arr[a][b]=AnotherArrWithRightValues[(13 * a) + b]; 
    } 
} 
+0

你的回答和我的一樣 –

+1

同時寫! –

0

試試這個,

var arr =[]; 

for(var a=0;a<13;a++) 
    { 
    arr[a] = new Array(); 
    for(var b=0;b<13;b++) 
     { 
     arr[a].push((13 * a) + b); 
     } 
    } 

我希望這將幫助你