【问题标题】:Javascript: Add key/value pairs in nested dict; key and value are variablesJavascript:在嵌套字典中添加键/值对;键和值是变量
【发布时间】:2019-12-17 00:28:00
【问题描述】:

我有一本结构如下的字典:

myDict = {key1:{innerKey1:innerValue1, innerKey2:innerValue2}, key2:{},...}

基于: How can I add a key/value pair to a JavaScript object?

我尝试像这样添加内部键/值对:

someArray=['foo','bar']
var identifier = someArray[0]
var info = someArray[1]
myDict[key1][identifier] = info;

或者像这样:

myDict[key1].identifier = info;

但我收到错误'无法设置未定义的属性'。我认为这是由于 myDict 中尚未定义标识符,但我无法弄清楚如何实现这一点:

myDict = {key1:{innerkey1:innerValue1, innerKey2: innerValue2, foo:bar,...}, key2:{},...} 

请注意:我知道在这个例子中变量的分配是不必要的。我需要弄清楚一个更大、更复杂的项目的概念,这是最小的“非工作”示例。

提前致谢:)

【问题讨论】:

    标签: javascript dictionary object nested keyvaluepair


    【解决方案1】:

    从你的 sn-p 看来,key1 似乎没有被定义。

    您还想确保在尝试访问对象之前已定义该对象

    someArray=['foo','bar']
    var identifier = someArray[0]
    var info = someArray[1]
    if (!myDict[key1]) myDict[key1] = {};
    myDict[key1][identifier] = info;
    

    【讨论】:

      【解决方案2】:

      括号表示法要求键是字符串:

      myDict["key1"][identifier] = info;
      

      或者只使用点符号:

      myDict.key1[identifier] = info;
      

      【讨论】:

      • 这也是我的答案,不知道为什么有人认为它不好。
      • key1 可能是一个公平的变量。
      • 我知道@Morphyish,但他们没有定义它的事实导致了错误。
      • 由于标识符是上面定义的变量myDict.key1[identifier] = info 将是正确的解决方案
      • @JackBashford 我自己的赌注是key1 在尝试更新其属性时在字典中没有关联值;D
      猜你喜欢
      • 1970-01-01
      • 2020-08-17
      • 2018-08-17
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多