将数组中的字符串文字转换为变量名
Convert string literals in an array to variable name
我是javascript新手。我试图将对象变量名存储在数组中但我这样做的方式是,数组值变成字符串。是否有一种方法可以将这些值从字符串更改为对象变量名称?在下面的代码中,最后一个语句是我想使用的,但它生成"未定义",因为,我认为,它被视为一个字符串。谢谢!
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);
免责声明:这是一种非常糟糕的样式,尽量避免使用。看看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));
}
您不能像您试图做的那样构建名称并让它存储具有相同名称的对象。在myArray
中有字符串"plan1"
和"plan2"
。你必须做一些像myArray[0] = plan1; myArray[1] = plan2;
这样的事情,然后它应该在数组中工作,就像你想要的那样。
不要尝试通过编程来实现。只要用你想要包含的部分来构建你的数组字面量:
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
}];
可以使用
myArray[i] = window["plan" + (i + 1)];
工作副本http://plnkr.co/edit/7pY4Lcmx6wN1rQk9rklu?p=preview
相关文章:
- AngularJS-在JSON选择器中使用变量名
- 命令行中的Uglify js;不要弄乱变量名
- 像createComment这样的各种自定义变量名在内联javascript中被覆盖,但在外部js中没有.为什么?
- 这在JavaScript中是一个好的变量名吗
- 在javascript中,在变量名之前使用var有什么区别/优势吗
- 在Javascript中连接一个动态变量名
- 如何使用jQuery循环变量名
- JavaScript将字符串转换为变量名
- 根据发送到javascript中函数的参数创建变量名
- 检索本身包含变量的 Jquery 变量名的值
- 测试JavaScript是否符合异常变量名
- 动态变量名语法
- 动态jQuery变量名
- 如何将变量名转换为对象jQuery的索引字符串
- 将字符串转换为要在jQuery.animate中使用的变量名
- 将json数组从嵌套表单数据转换为变量名/值以重新填充表单
- 在javascript中将字符串转换为变量名
- 在Javascript中将变量名转换为字符串
- 将数组中的字符串文字转换为变量名
- Javascript变量名强制转换为字符串