2009-06-04 17 views
1

Ich habe mehrere Arrays in Javascripts, z.Javascript mit Variable als Array-Name

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

Ich habe eine Funktion, die den Array-Namen übernimmt.

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

Derzeit verwende ich eval(), um zu tun, was ich will.
Gibt es eine Methode, eval() hier nicht zu verwenden?

Antwort

7

können Sie entweder passieren das Array selbst:

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

oder den Zugriff darauf über this:

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

Statt eine Reihe von eval der Kommissionierung ‚seinen Namen ing, speichern Sie Ihre Arrays in einem Objekt:

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

Ich habe jetzt 3D-Arrays. Wenn ich das mache, habe ich vielleicht 4d-Arrays und ich denke, es könnte zu kompliziert sein. – Billy

2

Warum können Sie nicht nur das Array übergeben?

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

Oder bin ich Missverständnis die Frage ...

1

warum nicht Sie Ihre Array als Funktionsargument übergeben?

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

ich alle Variablen glauben Sie erstellen sind tatsächlich Eigenschaften des Window-Objekt (I gehe davon aus, dass du gewarnt hast, dass dies in einem Webbrowser läuft. Sie können dies tun:

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

Gumbo's Antwort nur gesehen - mit diesem ist es besser als mit Fenster –

+0

Warum ist dies besser als die Verwendung von Fenster? – Billy

+0

Denn dann funktioniert es in jedem Kontext, Browser oder nicht. Außerdem bin ich mir nicht sicher, ob lokale Variablen, die Eigenschaften eines Fensters sind, in allen Browsern Standard sind oder nicht. Wenn nicht, wird die Verwendung weiterhin funktionieren, wo das Fenster nicht funktionieren würde. Im Allgemeinen ist es weniger wahrscheinlich, dass Fehler auf der Straße verursacht werden. –

Verwandte Themen