2011-04-01 46 views
0

我想創建一個名爲currentArray的數組,但我希望它的內容由不同的數組組成。基本上是一個副本。不過,我想用一個變量(int)來影響哪個數組被複制到currentArray中。我可以用JS數組來做這個嗎?

這裏就是我的意思是:

function region(number) 
{ 
     var regionArray1 = [1093, 1276, 436, 541]; 
     var regionArray2 = [563, 747, 310, 423, 744, 947, 601, 715]; 

     var currentArray = (regionArray+number)[]; 
} 

number將是1或2,什麼是這樣做的正確的方式,如果我可以嗎?我也試過var currentArray = ("regionArray"+number)[];,但這似乎並不正確。

回答

2

我會用一個二維數組:

function region(number) { 
    var regionArrays = [ 
     [1093, 1276, 436, 541], 
     [563, 747, 310, 423, 744, 947, 601, 715] 
    ]; 
    var currentArray = regionArrays[number - 1]; 

} 
+0

我得到了很多很好的答案,但是我選擇了這個答案,因爲這不僅是一個正確的答案,而且他還注意到我說'number'變量是1或2;) – Briz 2011-04-01 13:52:07

0

您應該使用開關/外殼。如果您知道需要執行的所有信息,則不應使用eval

function region(n) { 
    // define arrays ... 
    switch(n) { 
     case 1 : currentArray = regionArray1; break; 
     case 2 : currentArray = regionArray3; break; 
    } 
} 

如果擴展到超過2你可以有一個數組的數組,簡單地分配currentArray = arrayChoices[n];

5

「最好」的辦法是讓regionArray數組的數組(或數組的對象) :

function region(number) 
{ 
    var regionArray = { 
         "1": [1093, 1276, 436, 541], 
         "2": [563, 747, 310, 423, 744, 947, 601, 715] 
         }; 

    var currentArray = regionArray[number]; 
} 
+1

無需爲對象鍵開銷 - 數組的數組是不夠好。 – 2011-04-01 13:45:51

0

爲什麼不這樣:

function region(number) 
{ 
     var regionArray = []; 
     regionArray[0] = [1093, 1276, 436, 541]; 
     regionArray[1] = [563, 747, 310, 423, 744, 947, 601, 715]; 

     var currentArray = regionArray[ number ]; 
} 
+0

這在語法上無效。 – 2011-04-01 13:44:44

+0

@Sime Vidas:確切的說,我糾正過了,謝謝! – BiAiB 2011-04-01 13:50:26

2
function region(i) { 
    var regionArray = [ 
     [1093, 1276, 436, 541], 
     [563, 747, 310, 423, 744, 947, 601, 715] 
    ]; 

    var currentArray = regionArray[i]; 
}