2011-08-17 9 views
3

私はいくつかの変数の名前を持つ配列を持っています。理由を聞かないでください。 私はその配列をforeach()し、その値を変数名として使用する必要があります。 変数が存在し、データを含んでいます。変数の名前を持つjavascript配列

例:マイク・

はJavaScriptでそれも可能です:

myArray = ["variable.name", "variable.age", "variable.genre"]; 
variable.name = "Mike"; 
console.log(treat_it_as_variable_name(myArray[0])); 

コンソールは現在表示すべきか?

+0

ウィル文字列を行うことができますので、環境のトップレベルの変数は、windowオブジェクトに定義されます配列内では常に同じ 'variable.'を参照していますか? (つまり、最後の部分のみが異なります) –

+0

変数の名前を変更しませんか? –

答えて

9

Javascriptオブジェクトのプロパティに動的にアクセスしましょう。例えば、

var person = {name:"Tahir Akhtar", occupation: "Software Development" }; 
var p1="name"; 
var p2="occupation"; 
console.log(person[p1]); //will print Tahir Akhtar 
console.log(person[p2]); //will print Software Development 

eval一方では、文字列変数に保存されている完全な式を評価できます。例えば

(前の例から継続):ブラウザで

var tahir=person; 
console.log(eval('person.occupation'));//will print Software Development 
console.log(eval('tahir.occupation'));//will print Software Development 

あなたはトップレベルの変数にアクセスしたい場合は、window[myvar]

1

あなたは、変数を自分で解析することができます:あなたがこれを行うにはeval(myArray[i])を使用することができます

var t = myArray[0].split("."); 
console.log(this[t[0]][t[1]]); 
+0

ローカル変数☹では動作しません。 – 7vujy0f0hy

3

eval()は悪い習慣とみなされます。

あなたは代わりにこのような何かをやって検討するかもしれない:

var myArray = ["name", "age", "genre"]; 
var i; 
for (i = 0; i < myArray.length; i++) { 
    console.log(variable[myArray[i]]); 
} 
1

はgloabalオブジェクトのホールドを取得し、その内のインデックスする方法についてはthis questionを参照してください:

var global = // code from earlier question here 
console.log(global[myArray[0]]) 

うーん...私は見ますあなたの "変数名"にはドットが含まれているので、実際には単一の名前ではありません。それらをドット区切りのパーツに解析し、一度に1つのリンクをインデックスする必要があります。

+0

ローカル変数☹では動作しません。 – 7vujy0f0hy

関連する問題