所以,我传入了 3 个变量:
- stats(JSON 对象,如下所示)
- place_type(字符串,“US”或“State”)
- 因素(字符串)
我有另一个变量,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 循环?提前致谢。
最佳答案
给你:
var answer = stats[place_type][factor];
现场演示: http://jsfiddle.net/simevidas/NsT8Y/
考虑将其放入 try-catch block 中,因为您链接了属性访问器。如果 stats
中不存在 place_type
属性,则 stats[place_type]
将返回 undefined
,并且 undefined[factor]
会抛出一个错误。
var answer;
try {
answer = stats[place_type][factor];
} catch(e) {}
关于Javascript - 在没有 eval() 的情况下分配动态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5199705/