Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中向结构添加新项?_Javascript_Arrays - Fatal编程技术网

如何在JavaScript中向结构添加新项?

如何在JavaScript中向结构添加新项?,javascript,arrays,Javascript,Arrays,我有一个JavaScript结构 settings = { "type-1": { "setting-1": true, "setting-2": 2 } "type-2": { "setting-3": "value", } }; 我可以修改以下项目: settings["type-1"]["setting-1"] = false; 但

我有一个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"] = {};
settings["type-new"]["setting-100"] = "new one";

您可以在一行上完成:

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

Dogbert说得对,因为您使用的是对象文本(这就是它们的名称,而不是structs:p),所以必须先创建它们,然后才能为它们赋值。正在进行
设置[“键入新内容”][“设置-100”]=“新建内容”相当于
未定义[“设置-100”]=“新建一个”。这就是它不起作用的原因

另一方面,您最好不要在键中使用破折号,我发现编写类似于您的代码更容易:

settings.typeNew.setting100 = "new one";

更直观的方法是(
[“”]
符号在属性名是变量值的情况下非常有用,而您(正确地说)不想使用eval)。

我也更喜欢这种方法,但项目名称是动态的,所以我不能在我的情况下使用它。谢谢你的解释!:)在这种情况下,您当然可以使用
['']
。谢谢你,狗伯特!Sagivo也给出了一个很好的建议,但我接受你的回答,因为你是第一个。请注意,“struct”一词在JavaScript中不适用。您使用“对象文字”(有时也称为“对象初始化器”)定义“对象”,然后修改对象的属性。(在嵌套对象文字的示例中,实际上创建了三个对象。)