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

标签 javascript json eval

所以,我传入了 3 个变量:

  1. stats(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 + ";");

这在 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/

相关文章:

java - 如何对 Jackson 生成的 JSON 数据进行编码?

java - 无法从字符串值 ('{' 实例化 java.util.LinkedHashMap 类型的值;没有单字符串构造函数/工厂方法

php - WordPress 中使用 eval() 插件的漏洞示例

javascript - 如何仅使用 JSP 和 javascript 显示浏览文件夹窗口(不浏览文件)?

JavaScript 基于窗口宽度调整大小和加载、移动元素

javascript - 在我的代码中,javascript 无法与 asp.net 正常工作?

java - 在子类中覆盖@jsonIgnore

makefile - makefile 中的 $(eval ) 导致配方在第一个目标错误之前开始

function - 使用 defun 以编程方式构建 Common Lisp 函数

javascript - RxJS:处理 cycle.js 自定义驱动程序中的错误