[英]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.