【问题标题】:How to specify value for key in JSON map (in JavaScript)?如何为 JSON 映射中的键指定值(在 JavaScript 中)?
【发布时间】:2011-10-08 12:57:06
【问题描述】:

我可能在这里使用了错误的术语,但这是我想要做的。我想创建一个映射,每个键都有一个值,每个键的对象都有一个值。所以使用这段代码:

var myMap = {};
var keyVal = "abc";
var objVal = "123";
myMap.keyVal = objVal;

现在我要返回的是一个类似于 {"abc":"123"} 的 JSON 对象,但它返回的是 {"keyVal":"123"}。如何让它使用键的实际变量内容而不是变量名? (或者真的我猜它根本没有使用变量,只是将 'keyVal' 视为键名)

【问题讨论】:

  • 如果键是可变的且未知的,你将如何访问它的值?

标签: javascript json map key


【解决方案1】:

使用square bracket notation:

myMap[keyVal] = objVal;

【讨论】:

    【解决方案2】:
            var datajson = JSON.parse(data);
            var keyArr = Object.keys(datajson);
            for ( var i = 0; i < keyArr.length; i++) {
                var val = datajson[keyArr[i]];
                }
    

    【讨论】:

    • 请参阅文档以格式化答案。格式化未来的答案对您真的很有帮助。格式更好的答案具有更高的接受率。
    【解决方案3】:
    var keyVal = "abc";
    var objVal = "123";
    eval("myMap." + keyVal + "='" + objVal + "'")
    

    替代方案,但不推荐使用评估

    【讨论】:

    • eval("myMap." + keyVal) 可能会返回 undefined,并且在您使用它的上下文中会导致 Invalid Lefthand Assignment 错误。您想要写的是 eval("myMap." + keyVal + '="' + objVal + '"'),但这同样是错误的出于不同的原因。
    • 哎呀 eval("myMap." + keyVal + '="' + objVal + '"') 是正确的语法
    猜你喜欢
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    相关资源
    最近更新 更多