我有一个像这样的对象
var localAppConfig = {
wallet:0,
paySomeone:0,
payBills:0,
accounts:0,
moveMoney:0,
alerts:0,
offers:0,
checkIn:0
};
我想为此localAppConfig
从json
检索需要设置的元素 - 从服务器到达。
说,我想为钱包,paySomeone,payBills,alert,offer,checkIn
设置value = 1这些是从json
喜欢的
for(var i=0;i<len;i++){
var name = list[i].handle;
var accessor = eval('localAppConfig.'+name);
eval('localAppConfig.'+name)=1;
}
var name
包含元素的名称,我可以正确访问其值,
如何使用javascript设置值?
我试过了accessor=1
,但它没有用。
谢谢:)
答案 0 :(得分:2)
你应该这样做:
var accessor = localAppConfig[name];
localAppConfig[name] = 1;
答案 1 :(得分:2)
无论如何:尝试这个尺寸:
localAppConfig[name] = 1;//where name is a variable of choice, it's value will be used as the propertyname
再次:
- 当你拥有的是平衡锤时,一切都像你的拇指。 -Brendan Eich回应:我们应该鼓励使用eval()而不是Function构造函数来动态创建函数。
但为什么要使用属性列表?你也可以使用一个for...in
循环:对于像你这样的对象,它是完全可以的。
只要你检查.hasOwnProperty
:
for (var prop in localAppConfig)
{
if (localAppConfig.hasOwnProperty(name))
{
//set, delete... do whatever
}
}
答案 2 :(得分:0)
请勿使用eval()
。您可以通过引用对象中该值的索引来添加属性。如果它不存在则会创建它,否则将覆盖该值。
请尝试以下方法:
// localAppConfig[list[i].handle] = 1;
for(var i=0;i<len;i++){
localAppConfig[list[i].handle] = 1;
}
或者如果您打算在其他地方引用该变量,则设置一个值为list[i].handle
的变量:
for(var i=0;i<len;i++){
var name = list[i].handle;
var accessor = localAppConfig[name];
localAppConfig[name] = 1;
}
答案 3 :(得分:0)
尝试localAppConfig[name] = 1;
它只是一个javascript对象,不需要在其上使用eval()
。