2

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"]は未定義です。では、新しいものを追加するにはどうすればよいですか?

4

3 に答える 3

4

あなたは一行でそれを行うことができます:

settings["type-new"] = {"setting-100": "new one"}
于 2012-08-14T10:57:14.040 に答える
2

最初にsettings["type-new"]をオブジェクトに設定する必要があります。

settings["type-new"] = {};
settings["type-new"]["setting-100"] = "new one";
于 2012-08-14T10:48:27.833 に答える
1

Dogbertはそれを正しく理解しました。オブジェクトリテラル(構造体:Pではなく、オブジェクトリテラルと呼ばれるもの)を使用しているため、値を割り当てる前に、オブジェクトリテラルを作成する必要があります。行うことsettings["type-new"]["setting-100"] = "new one";はと同等undefined["setting-100"] = "new one";です。それが機能しない理由です。

一方で、キーにダッシュを使用しない方が本当に良いです。次の行に沿って、自分のようなコードを書く方が簡単だと思います。

settings.typeNew.setting100 = "new one";

これはより直感的です([""]プロパティ名が変数の値であり、evalを使用したくない場合は、この表記が非常に役立ちます)。

于 2012-08-14T10:58:25.397 に答える