所以,我传入了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 + ";");
这可能在JS中不需要eval()或大量不同的IF循环吗?提前谢谢。
答案 0 :(得分:4)
你走了:
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) {}
答案 1 :(得分:2)
对于这个例子,这很容易。
的等效语法var answer = stats.State.factor2;
是
var answer = stats["State"]["factor2"];
后一种语法适用于变量:
var answer = stats[place_type][factor];
答案 2 :(得分:1)
var answer = stats[place_type][factor];