2016-02-03 86 views
0

我有從數據庫sqlite獲取值的多維數組函數。使用FOR循環將值存儲在像多維數組值中的變量

var myarray = []; 

數組值會像下面:

myarray[0][0] = "ABC"; 
myarray[0][1] = "abc"; 
... 
... 
... 
myarray[3][1] = "GHI"; 

我需要存儲數組值這樣一個變量:

var md2 = [[myArray[0][0], myArray[0][1]], 
    [myArray[1][0], myArray[1][1]], 
    [myArray[2][0], myArray[2][1]], 
    [myArray[3][0], myArray[3][1]]]; 

如何我聲明上述數組值動態?

我嘗試以下:

for(var t =0; t<md2.length; t++){ 

var g = 0; 

md2 = [myarray[t][g],myarray[t][g+1]]; 

} 

上面這是行不通的。

我預期的結果是這樣的使用循環:

var md2 = [[myArray[0][0], myArray[0][1]], 
     [myArray[1][0], myArray[1][1]], 
     [myArray[2][0], myArray[2][1]], 
     [myArray[3][0], myArray[3][1]]]; 

我怎樣才能做到這一點使用外環或其他。 建議是非常可觀的。

+0

你究竟在做什麼?只需複製第一個數組? – charlietfl

+0

只需decalare一個新數組並使用推式方法 –

+0

@charlietfl。我只需要使用循環條件動態地存儲'[myArray [0] [0]'......的值。因爲myArray的長度可能不同於數據庫 –

回答

1

這兩種方法會給你的myArray的一個副本是你在你的代碼正在做的,因爲它現在是

var md2 = [].concat(myarray); 
// OR 
var md2 = myarray.slice(); 

兩者都是非破壞性的,會留下myarray不變

2

您可以使用下面的代碼。檢查演示 - Fiddle

var md2 = []; 
for (var t=0; t < myarray.length; t = t+2){ 
    if (myarray[t] && myarray[t+1]) { 
     md2.push([ myarray[t], myarray[t+1] ]); 
    } 
} 
+0

謝謝frd,這不適合我,但tq花時間:) .....但工作在JQfiddle –

0

二維數組簡單地建立在一個「正常」的陣列創建。

var aa = new Array(3) 
for(var i=0; i<3;i++) { 
    aa[i]=new Array(3); 
    for(var j=0; j<3;j++) { 
     aa[i][j] = j; 
    } 
    } 
    console.log(aa); 

Output: [[0, 1, 2], [0, 1, 2], [0, 1, 2]] 

希望它有幫助。

0

可以使用此代碼從多維到單店價值

var md2 = []; 
var cnt = 0; 
for(var i=0;i<myArray.length;i++){ 
md2[i] = myArray[i]; 
} 
相關問題