简体   繁体   English

如何在JavaScript中添加新项目以进行结构化?

[英]How to add a new item to struct in JavaScript?

I have a struct in JavaScript 我在JavaScript中有一个结构

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

I can modify the items: 我可以修改以下项目:

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

But how can I add a new item in this struct? 但是如何在此结构中添加新项目?

Trying

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

But settings["type-new"] is undefined. 但是settings [“ type-new”]未定义。 So how to add a new one? 那么如何添加一个新的呢?

您可以一行完成:

settings["type-new"] = {"setting-100": "new one"}

You need to set settings["type-new"] to an object first. 您首先需要为对象设置settings [“ type-new”]。

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

Dogbert got it right, since you're using object literals (that's what they're called, not structs :P), you have to create them, before you can assign values to them. Dogbert说得对,因为您正在使用对象文字(即所谓的对象文字,而不是structs:P),因此必须先创建它们,然后才能为它们赋值。 Doing settings["type-new"]["setting-100"] = "new one"; 进行settings["type-new"]["setting-100"] = "new one"; is equivalent to undefined["setting-100"] = "new one"; 等效于undefined["setting-100"] = "new one"; . That's why it doesn't work. 这就是为什么它不起作用。

On the side, you're really better off not using dashes in your keys, I find it easier to write code like yours along the lines of: 一方面,您最好不要在键中使用破折号,我发现更容易按照以下方式编写像您这样的代码:

settings.typeNew.setting100 = "new one";

Which is more intuitive (the [""] notation is very serviceable in cases where the property name is the value of a variable, and you -rightly so- don't want to use eval). 这更直观(在属性名是变量的值的情况下[""]标记非常有用,并且您-恰恰是-不想使用eval)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM