我想要实现的是在 JavaScript对象上使用push()
,如下所示:
var apps = {
app1:
[
"ci-extension",
"Unnamed",
"<h1>Hello world!</h1>"
],
app2:
[
"ci-extension",
"Another one!",
"Cool!"
]
}
目标是添加第三个键&#34; 演示&#34;到对象,然后再推三行。 所以在推动之后,对象应该如下所示:
var apps = {
app1:
[
"ci-extension",
"Unnamed",
"<h1>Hello world!</h1>"
],
app2:
[
"ci-extension",
"Another one!",
"Cool!"
],
demo:
[
"ci-google",
"My demo app!",
"Some content"
]
}
我尝试了以下代码Object.keys(apps).push("demo");
(如果这有意义的话)。作为输出,我只是 3 和关键&#34;演示&#34;未添加到对象中。
然后将项目添加到 demo 我尝试使用这一小段代码
Object.keys(apps)["demo"].push("blah blah blah...");
,但它完全不起作用。
答案 0 :(得分:2)
这里你不需要push()
,这是为了添加到一个现有阵列。你只想添加一个密钥。最简单的方法是:
apps.demo = [ "ci-google", "My demo app!", "Some content" ];
或等同地
apps["demo"] = [ "ci-google", "My demo app!", "Some content" ];
你的代码不起作用的原因是因为Object.keys( apps )
创建了一个包含apps
对象中所有键的新数组,但是对该数组执行任何操作都不会对实际执行任何操作apps
对象 - 您只是在编辑新数组。您需要做的是直接更改应用程序对象(如上所示)。
答案 1 :(得分:0)
注意:Duncan的答案具有最低的学习曲线。
说到这一点 - 特别是因为你已经在内置对象类型上使用了.keys()
方法 - 你可以看到两个选项:
两个方法都将返回包含属性的新对象,并将其作为第二个参数传递给函数。
Object.assign(demo, {new_property})
将返回一个带有演示拥有属性的对象 - 从而忽略了原型链。
Object.create(demo, {new_property})
会将prototype linked的对象返回给demo。