将嵌套对象分配给对象JS

时间:2015-05-13 20:59:18

标签: javascript

之前可能会问过,但我没有看到这个问题:

有没有办法在javascript中声明一个对象,以便我可以直接在多个嵌套级别中分配值(而不是沿途声明每个级别)?

示例:

var obj = {};
obj["key1"]["key2"]["key3"] = "value";
obj["key1"]["key4"]["key5"] = "value2; 

以上对我来说不起作用,但由于我是动态创建对象的,因此我必须首先检查是否存在,因此为每个密钥创建每个级别都会很昂贵。

即:

if (!obj["key1"]) obj["key1"] = {};
elseif (!obj["key1"]["key2"]) !obj["key1"]["key2"] = {};
... etc

我希望这是有道理的。

1 个答案:

答案 0 :(得分:0)

这样做是没有意义的。

我确信你需要一个非常特殊的情况,所以我建议你检查你的目的并使用帮助函数。

例如,setProperty(targetObj, path, value)其中path['key1', 'key2']之类的普通列表,因此您可以检查是否存在。

此外,如果有意义,您可以组合一组键。像obj[key1 + '_' + key2]一样。在这种情况下编写辅助getter和setter也很容易。

P.S。再一次,你真的不想那样走。如果必须通过一组键访问值,则可能是一个组合键。不要让它变得复杂。