2009-06-04 7 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()を使用しない方法はありますか?代わりにその名をINGの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

、オブジェクトにあなたの配列を格納:

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

私は今、3dアレイを持っています。私がこれを行うと、4次元配列を持つ可能性があり、複雑すぎるかもしれないと思います。 – Billy

2

なぜあなただ​​けの配列を渡すことはできませんか?

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

または私は質問を誤解しています...

1

なぜあなたはあなたの関数の引数として、あなたの配列を渡していませんか?

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

を私は(あなたが作成した変数は、実際にウィンドウオブジェクトのプロパティであると信じてIこれはウェブブラウザで実行されているという警告を使用していると仮定しています)。あなたはこれを行うことができます:

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

ちょうどGumboの答えを見ました - これはウィンドウを使うよりも使いやすいです –

+0

なぜこれはウィンドウを使うよりも優れていますか? – Billy

+0

それはどんなコンテキストでも動作するため、ブラウザーでもそうでなくてもかまいません。また、ウィンドウのプロパティであるローカル変数がすべてのブラウザで標準であるかどうかはわかりません。そうでない場合は、これを使用して、ウィンドウが表示されない場所で作業を続けます。一般的に、それは道路の下でエラーを起こす可能性は低いです。 –

関連する問題