簡體   English   中英

如何在JavaScript對象上執行“推”操作?

[英]How do you perform `push` on a JavaScript object?

我想要實現的是在JavaScript對象上使用push() ,如下所示:

var apps = {
    app1:
    [
        "ci-extension",
        "Unnamed",
        "<h1>Hello world!</h1>"
    ],
    app2:
    [
        "ci-extension",
        "Another one!",
        "Cool!"
    ]
}

目的是向對象添加第三個鍵“ demo ”,然后再向其推三行。 因此,在所有推送之后,對象應如下所示:

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個 ,並且鍵“ demo”沒有添加到對象中。
然后將項目添加到演示中,我嘗試使用這段小代碼Object.keys(apps)["demo"].push("blah blah blah..."); ,但完全無效。


我的大腦和思想變得模糊。 任何幫助將不勝感激,非常歡迎。 提前致謝!

您無需在此處push() ,這是為了添加到現有數組。 您只想添加一個密鑰。 最簡單的方法是這樣的:

apps.demo = [ "ci-google", "My demo app!", "Some content" ];

或者,等效地

apps["demo"] = [ "ci-google", "My demo app!", "Some content" ];

您的代碼不起作用的原因是因為Object.keys( apps )創建了一個新數組,其中包含apps對象中的所有鍵,但是對該數組執行操作對實際的apps對象沒有任何作用-只是編輯您的新數組。 您需要做的是直接更改apps對象(如上所示)。

注意:鄧肯的答案具有最低的學習曲線。

這么說(尤其是因為您已經在內置Object類型上使用了.keys()方法),您可以查看以下兩個選項:

  1. Object.assign()
  2. Object.create()

這兩種方法都將返回包含屬性的新對象,這些屬性將作為第二個參數傳遞給函數。

Object.assign(demo, {new_property})將返回具有demo 自身屬性的對象-從而忽略了原型鏈。

Object.create(demo, {new_property})將返回鏈接到演示的原型的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM