【问题标题】:js object update nested objectsjs对象更新嵌套对象
【发布时间】:2020-05-15 16:58:10
【问题描述】:

这是我的 JSON:

{
  "language": "eng",
  "plugins": {
    "search": false,
    "import-xml": false,
    "export-xml": false,
    "import-pdf": false,
    "export-pdf": false
  },
  "tabs": {
    "general": {
      "arm": "Գլխավոր",
      "rus": "Главный",
      "eng": "General",
      "documentTitle": {
        "arm": "Փաստաթղթի Անվանումը",
        "rus": "Заголовок Документа",
        "eng": "Document Title"
      },
      "sections": {
        "14656691": {
          "type": "field-section",
          "title": "",
          "elements": {
          },
          "collapse": false
        },
        "06558184": {
          "type": "table-section",
          "title": "",
          "elements": {
          },
          "collapse": false
        }
      }
    },
    "custom-19588079": {
      "arm": "Custom",
      "rus": "Custom",
      "eng": "Custom",
      "documentTitle": {
        "arm": "Փաստաթղթի Անվանումը",
        "rus": "Заголовок Документа",
        "eng": "Document Title"
      },
      "sections": {
      }
    }
  }
}

例如,我想在一般部分对象中添加新对象。我该怎么做?

我试图做这样的事情,但它不能正常工作:

let config = {} (my object);

config = {...config.general.sections, ...{new object}}

config 结果是config.general.sections 对象。

【问题讨论】:

  • 为什么会令人惊讶?您将 config 明确替换为 config.general.sections 的浅拷贝加上“新对象”中的任何内容。
  • 更新为config.tabs.general.sections = {...config.tabs.general.sections, ...{new object}}
  • Object.assign(config.tabs.general.sections, newObject) 怎么样?
  • 同样的结果问题出在localStorage中,json在localStorage上

标签: javascript jquery object


【解决方案1】:

尝试这样做:

let config = {} (my object);
let newObject = {"newKey":"newValue"};
config.general.newSection = newObject;
console.log(config);

或者试试这个:

let config = {} (my object);
let newObject = {"newKey":"newValue"};
config['general']['newSection'] = newObject;
console.log(config);

我家它的作品

【讨论】:

    【解决方案2】:

    有一种简单的方法,可以与新部分合并并重新分配:

    config.tabs.general.sections = {
      ...config.tabs.general.sections,
      newSection: {},
    };
    

    这里有一个很好的解释https://dmitripavlutin.com/object-rest-spread-properties-javascript/

    【讨论】:

      【解决方案3】:

      如果您知道所需值的路径,此代码将非常有用。

      https://stackoverflow.com/a/66440832/1602673

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-13
        • 2016-02-20
        • 2021-12-15
        • 1970-01-01
        • 2021-11-27
        • 2021-09-18
        • 2015-06-25
        • 1970-01-01
        相关资源
        最近更新 更多