2011-08-17 185 views
3

我有一個數組,其中有一些變量的名稱。不要問爲什麼。 我需要foreach()該數組,並使用它的值作爲變量名稱。 我的變量存在幷包含數據。具有變量名稱的javascript數組

例子:

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

控制檯現在應該顯示:邁克

它甚至有可能在JavaScript?

+0

請問串在數組中總是引用相同的'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對象定義,因此,如果您要訪問頂級變量,你可以做window[myvar]

1

你可以自己分析的變量:

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

不適用於局部變量☹。 – 7vujy0f0hy

3

您可以使用eval(myArray[i])做到這一點。請注意,eval()被認爲是不好的做法。

你可能會考慮做這樣的事情,而不是:

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

this question如何獲得gloabal對象的保持和再索引到的是:

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

嗯...我看現在您的「變量名稱」包含點,所以它們實際上不是單個名稱。您需要將它們解析爲以點分隔的部分,並一次對一個鏈接建立索引。

+0

不適用於局部變量☹。 – 7vujy0f0hy

相關問題