繁体   English   中英

Javascript-在没有eval()的情况下分配动态值

[英]Javascript - assigning dynamic values without eval()

因此,我传入了3个变量:

  1. 统计信息 (JSON对象,如下所示)
  2. place_type (字符串,“ US”或“ State”)
  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]会返回undefinedundefined[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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM