带有变量名称的javascript数组

时间:2011-08-17 11:56:21

标签: javascript arrays variables

我有一个包含某些变量名称的数组。不要问为什么。 我需要foreach()该数组并使用它的值作为变量名称。 我的变量存在并包含数据。

示例:

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

控制台现在应该显示:Mike

甚至可以在javascript中使用吗?

4 个答案:

答案 0 :(得分:10)

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 :(得分:3)

您可以使用eval(myArray[i])执行此操作。请注意,eval()被视为不良做法。

你可能会考虑做这样的事情:

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

答案 2 :(得分:1)

您可以自己解析变量:

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

答案 3 :(得分:1)

请参阅this question了解如何抓住gloabal对象,然后将其编入索引:

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

嗯......我现在看到你的“变量名”包含点,所以它们实际上不是单个名字。您需要将它们解析为点分隔的部分,并一次索引一个链接。