2

我在 JavaScript 中有一个结构

    settings = {
        "type-1": {
            "setting-1": true,
            "setting-2": 2
         }
        "type-2": {
            "setting-3": "value",
         }
    };

我可以修改项目:

settings["type-1"]["setting-1"] = false;

但是我怎样才能在这个结构中添加一个新项目呢?

settings["type-new"]["setting-100"] = "new one";

但是 settings["type-new"] 是未定义的。那么如何添加一个新的呢?

4

3 回答 3

4

你可以在一行上做到这一点:

settings["type-new"] = {"setting-100": "new one"}
于 2012-08-14T10:57:14.040 回答
2

您需要先将 settings["type-new"] 设置为对象。

settings["type-new"] = {};
settings["type-new"]["setting-100"] = "new one";
于 2012-08-14T10:48:27.833 回答
1

Dogbert 是对的,因为您使用的是对象文字(这就是它们的名称,而不是结构 :P),因此您必须先创建它们,然后才能为它们赋值。做settings["type-new"]["setting-100"] = "new one";相当于undefined["setting-100"] = "new one";。这就是为什么它不起作用。

另一方面,你最好不要在你的键中使用破折号,我发现编写像你这样的代码更容易:

settings.typeNew.setting100 = "new one";

哪个更直观(在[""]属性名称是变量的值的情况下,符号非常有用,并且您 - 正确地 - 不想使用 eval )。

于 2012-08-14T10:58:25.397 回答