gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:15:09 25 4
gpt4 key购买 nike

所以,我传入了 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com