2011-08-17 62 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

相关问题