2009-06-04 62 views
1

我在Javascript中有幾個數組,例如,使用變量作爲數組名的Javascript

a_array [0] =「abc」;
b_array [0] =「bcd」;
c_array [0] =「cde」;

我有一個需要數組名稱的函數。

function perform(array_name){ 
    array_name = eval(array_name); 
    alert(array_name[0]); 
} 
perform("a_array"); 
perform("b_array"); 
perform("c_array"); 

目前,我使用eval()來做我想做的事。
有沒有什麼方法不使用eval()在這裏?

回答

7

您可以通過數組本身:

function perform(array) { 
    alert(array[0]); 
} 
perform(a_array); 

或訪問過this

function perform(array_name) { 
    alert(this[array_name][0]); 
} 
perform('a_array'); 
4

而是由eval「荷蘭國際集團的名稱採摘的陣列,存儲陣列的一個對象:

all_arrays = {a:['abc'], b:['bcd'], c:['cde']}; 
function perform(array_name) { 
    alert(all_arrays[array_name][0]); 
} 
+0

我現在有3d數組。如果我這樣做,我可能會有4D陣列,我認爲它可能太複雜了。 – Billy 2009-06-04 19:09:45

2

爲什麼你就不能傳遞數組?

function perform(array){ 
    alert(array[0]); 
} 
perform(a_array); 
perform(b_array); 
perform(c_array); 

還是我誤解了問題...

1

你爲什麼不通過你的數組作爲你的函數的參數?

function perform(arr){ 
    alert(arr[0]); 
} 
0

我相信你創建的任何變量實際上是(我的window對象的屬性假設你使用警報,這是在網絡瀏覽器中運行)。你可以這樣做:

alert(window[array_name][0]) 
+0

剛剛看到Gumbo的答案 - 使用這個比使用窗口更好 – 2009-06-04 19:15:11