【问题标题】:Adding key/values pairs to JSON map down one level将键/值对添加到 JSON 映射向下一级
【发布时间】:2016-06-06 05:18:15
【问题描述】:

我正在尝试使用 jquery/javascript 将新的键/值对动态添加到现有的 json 映射中。我的结构示例如下:

var widgetTypes = {
  "CLASS_A": {
    "A1": "A1 Description",
    "A2": "A2 Description"
  },
  "CLASS_B": {
    "B1": "B1 Description",
    "B2": "B2 Description"
  }
};

如何将键/值对附加到任一类(即 CLASS_A 或 CLASS_B)。例如,如何将描述为“A3 描述”的项目 A3 添加到结构的 CLASS_A 部分,以便我得到以下内容?

var widgetTypes = {
  "CLASS_A": {
    "A1": "A1 Description",
    "A2": "A2 Description"
    "A3": "A3 Description"
  },
  "CLASS_B": {
    "B1": "B1 Description",
    "B2": "B2 Description"
  }
};

我知道您可以执行类似 widgetTypes['CLASS_A'].type = 'A3' 等的操作,但我似乎无法完全正确(或者我偏离了轨道)。我发现了很多添加上述级别项目的示例(即添加 CLASS_C),但对于我感兴趣的事情却一无所获。

【问题讨论】:

    标签: javascript jquery json


    【解决方案1】:

    有几种方法:

    1. . 点符号。
    2. [] 括号表示法。
    3. Object.defineProperty() 方法。

    var widgetTypes = {
      "CLASS_A": {
        "A1": "A1 Description",
        "A2": "A2 Description"
      },
      "CLASS_B": {
        "B1": "B1 Description",
        "B2": "B2 Description"
      }
    };
    

    1.

    widgetTypes.CLASS_A.A3 = "A3 Description"
    

    2.

    widgetTypes["CLASS_A"]["A3"] = "A3 Description"
    

    3.

    Object.defineProperty(widgetTypes.CLASS_A, 'A3', {
      value: "A3 Description",
      writable: true,
      enumerable: true,
      configurable: true
    });
    

    选项 3 与这两个相比还有其他几个优点,您可以配置属性行为。

    【讨论】:

      【解决方案2】:
      widgetTypes.CLASS_A.A3 = "A3 Description";
      

      或等效

      widgetTypes["CLASS_A"]["A3"] = "A3 Description";
      

      【讨论】:

      • 感谢 Amadan,效果很好。我知道它会像这样简单。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-11
      • 1970-01-01
      • 2019-05-27
      • 1970-01-01
      相关资源
      最近更新 更多