2012-08-14 25 views
0

我在JavaScript中如何添加一個新的項目結構在JavaScript中?

一個struct
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"; 

但設置[ 「式的新」]是不確定的。那麼如何添加一個新的?

+0

請注意,術語「結構」不適用於JavaScript。您正在使用「對象字面量」(有時也稱爲「對象初始值」)來定義「對象」,然後修改對象的屬性。 (在你的嵌套對象文字的例子中,你實際上創建了三個對象。) – nnnnnn 2012-08-14 11:52:50

回答

2

您需要先將設置[「type-new」]設置爲對象。

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

謝謝,Dogbert! Sagivo也給出了一個很好的建議,但自從你第一次接受你的回答。 – podeig 2012-08-14 11:05:26

2

你可以做一個行:

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

謝謝,Sagivo!很好的靈魂!有用! – podeig 2012-08-14 11:06:22

+0

總是樂於幫助:) – 2012-08-14 11:09:38

1

Dogbert這樣做是正確的,因爲你使用對象文本(這就是他們叫什麼,而不是結構:P),你有創建它們,然後才能爲其分配值。做settings["type-new"]["setting-100"] = "new one";相當於undefined["setting-100"] = "new one";。這就是爲什麼它不起作用。

就在旁邊,你真的掉在你的鑰匙不使用破折號好,我覺得更容易編寫代碼一樣的線沿線的你:

settings.typeNew.setting100 = "new one"; 

哪一個更直觀(在[""]符號在屬性名稱是一個變量的值的情況下非常有用,而且您 - 不要使用eval)。

+1

我更喜歡這種方法,但項目的名稱是動態的,所以我不能在我的情況下使用這個。謝謝你的解釋! :) – podeig 2012-08-14 11:03:59

+0

在這種情況下,你當然可以使用'['']'。快樂的編碼 – 2012-08-14 12:17:19

相關問題