我是javascript的新手。我试图将对象变量名存储在数组中,但我正在这样做,数组值成为字符串。有没有办法将这些值从字符串更改为对象变量名称?在下面的代码中,最后一个语句是我想要使用的,但它会生成“undefined”,因为我认为它被视为一个字符串。谢谢!
var plan1 = {
name: "Lisa",
price: 5.00,
space: 100
}
var plan2 = {
name: "John",
price: 2.00,
space: 150
}
var myArray = [];
for (var i = 0; i < 2; i++) {
myArray[i] = "plan" + (i + 1);
}
alert(plan2.name);
alert(myArray[1].name);
答案 0 :(得分:1)
您不能像尝试那样构建名称,并使其存储具有相同名称的对象。 myArray
中的内容是字符串"plan1"
和"plan2"
。
您必须执行myArray[0] = plan1; myArray[1] = plan2;
之类的操作然后它应该像您希望的那样在数组中工作。
答案 1 :(得分:1)
免责声明:这是一种非常糟糕的风格,尽量避免它。看http://nedbatchelder.com/blog/201112/keep_data_out_of_your_variable_names.html
您可以考虑使用eval
:
for (var i = 0; i < 2; i++) {
myArray[i] = eval("plan" + (i + 1));
}
答案 2 :(得分:0)
请勿尝试以编程方式执行此操作。只需从您希望包含的部分构建数组文字:
var plan1 = {
name: "Lisa",
price: 5.00,
space: 100
};
var plan2 = {
name: "John",
price: 2.00,
space: 150
};
var myArray = [plan1, plan2];
甚至根本不将这些变量用于对象,并直接将它们放在数组结构中:
var myArray = [{
name: "Lisa",
price: 5.00,
space: 100
}, {
name: "John",
price: 2.00,
space: 150
}];
答案 3 :(得分:0)
你可以使用
myArray[i] = window["plan" + (i + 1)];
的工作副本