![](/img/trans.png)
[英]Javascript loop for dynamic variables (and values) from array without eval
[英]Javascript - assigning dynamic values without eval()
因此,我传入了3个变量:
我还有另一个变量answer ,其值取决于其他变量。 例如,如果place_type =“ State”和factor =“ factor2”,则
var answer = stats.State.factor2; // equals "E"
我正在尝试查看是否有一种无需使用eval()即可动态分配变量的方法。
// Simplified, there are many more than 3 factors
var stats = {
"US": {
"factor1" : "A",
"factor2" : "B",
"factor3" : "C"
},
"State": {
"factor1" : "D",
"factor2" : "E",
"factor3" : "F"
}
}
使用eval(),它是这样完成的:
eval("var answer = stats." + place_type + "." + factor + ";");
不需要eval()或大量不同的IF循环,这在JS中是否可行? 提前致谢。
干得好:
var answer = stats[place_type][factor];
现场演示: http : //jsfiddle.net/simevidas/NsT8Y/
考虑到将属性访问器链接在一起,请考虑将其放在try-catch块中。 如果place_type
属性不存在中的stats
,然后stats[place_type]
会返回undefined
和undefined[factor]
将抛出一个错误。
var answer;
try {
answer = stats[place_type][factor];
} catch(e) {}
对于此示例,这很容易。 等价的语法
var answer = stats.State.factor2;
是
var answer = stats["State"]["factor2"];
后一种语法将在适当的位置使用变量:
var answer = stats[place_type][factor];
var answer = stats[place_type][factor];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.