【问题标题】:How to assign values to variables by key in JavaScript如何在 JavaScript 中通过键为变量赋值
【发布时间】:2013-04-08 13:03:27
【问题描述】:

我有一个 JSON 字符串如下:{firstname: "foo", lastname: "bar", message: "I'm fubar" } 并希望将每个值分配给与其各自键名完全相同的变量:

我应该得到一个var firstname 或对象obj.firstname 来分配值“foo”等...

项目列表显然应该扩展,所以我不想硬编码键/变量名称来分配每个值。

什么是完成这个非常简单的任务的好方法?

是否存在一种 getElementById 类型的解决方案来为 key 标识的变量分配其各自的值?

这是我正在尝试的,带有一些伪代码:

var firstname = "";
var lastname = "";
// etc...
var data = JSON.parse({firstname: "foo", lastname: "bar", message: "I'm fubar", age: "etc..."});

    for (var key in data) {

        ("the variable currently identified by the value of key").val(data[key]);
        // or any other way of assigning "foo" to firstname

        console.log("firstname: " + firstname + ", lastname: " + lastname);
    }

然后打印出来

firstname: foo, lastname: bar

【问题讨论】:

  • 您可以通过data.key 访问它,例如data.firstname
  • 问题已解决。我选择了基于对象的方法,因为它最适合我的问题,但其他答案也适用。

标签: javascript json forms variables


【解决方案1】:

实际上,如果您在顶级范围内运行代码,您就是在将变量分配给窗口对象。

for (var key in data) {
    this[key] = data[key]; // Equivalent to window[key] here
}

【讨论】:

    【解决方案2】:

    如果要将其分配给具有这些值作为属性的对象,只需使用以下内容:

    var obj = {firstname: "foo", lastname: "bar", message: "I'm fubar", age: "etc..."};
    

    由于 JSON 是 JavaScript Object Notation,JavaScript 能够将此类数据解释为 JavaScript 对象。这允许您以obj.firstname 等方式访问属性。

    【讨论】:

    • 非常感谢这个答案,这简化了一切:)
    【解决方案3】:

    您必须定义要“提取”密钥的范围。在这种情况下,您可能希望引用全局范围:

    for (var key in data) {
        window[key] = data[key];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-16
      • 2014-06-27
      • 1970-01-01
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 2015-03-24
      • 1970-01-01
      相关资源
      最近更新 更多