2009-06-04 8 views
1

J'ai plusieurs tableaux dans des Javascripts, par ex.Javascript utilisant une variable comme nom de tableau

a_array [0] = "abc";
b_array [0] = "bcd";
c_array [0] = "cde";

J'ai une fonction qui prend le nom du tableau.

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

Actuellement, j'utilise eval() pour faire ce que je veux.
Y at-il une méthode pour ne pas utiliser eval() ici?

Répondre

7

Vous pouvez passer le tableau lui-même:

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

ou y accéder plus this:

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

Au lieu de choisir un tableau en eval « ing son nom, stocker vos tableaux dans un objet:

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

J'ai maintenant des tableaux 3D. Si je fais cela, je peux avoir des tableaux 4d et je pense que c'est peut-être trop compliqué. – Billy

2

Pourquoi ne pouvez-vous passer juste le tableau?

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

Ou suis-je mal compris la question ...

1

pourquoi ne passez-vous pas votre tableau en tant que votre argument de fonction?

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

Je crois que toutes les variables que vous créez sont en fait des propriétés de l'objet de la fenêtre (I Je suppose que vous avez utilisé l'alerte que cela fonctionne dans un navigateur Web). Vous pouvez le faire:

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

Juste vu la réponse de Gumbo - en utilisant c'est mieux que l'utilisation de la fenêtre –

+0

Pourquoi est-ce mieux que d'utiliser la fenêtre? – Billy

+0

Parce que cela fonctionne dans n'importe quel contexte, navigateur ou non. En outre, je ne suis pas sûr si les variables locales étant des propriétés de fenêtre est standard sur tous les navigateurs ou non. Si ce n'est pas le cas, cela continuera à fonctionner, ce qui n'est pas le cas de la fenêtre. En général, il est juste moins susceptible de causer des erreurs sur la route. –

Questions connexes