Javascript:在嵌套字典中添加键/值对;键和值是变量

Posted

技术标签:

【中文标题】Javascript:在嵌套字典中添加键/值对;键和值是变量【英文标题】:Javascript: Add key/value pairs in nested dict; key and value are variables 【发布时间】: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:,... 

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

提前致谢:)

【问题讨论】:

【参考方案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

以上是关于Javascript:在嵌套字典中添加键/值对;键和值是变量的主要内容,如果未能解决你的问题,请参考以下文章

Python ❀ 字典

一旦我递归搜索了一个字典,就添加一个键/值对

如何使用linq从字典中获取嵌套键值对[重复]

当事先不知道层次结构中的键位置时,如何访问嵌套的 Python 字典键值对?

第六章-字典

JavaScript:推送嵌套对象键值对