2009-06-04 65 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