Добавить к вложенному объекту через Object.assign - PullRequest
0 голосов
/ 02 октября 2019

Допустим, у меня есть объект

   let sampleObject = {
        "child1": [
            {"id": "id1"},
            {"id": "id2"}
        ]
    };

Есть ли способ добавить другое вложенное свойство после того, как sampleObject уже был объявлен?

Я хочу, чтобы sampleObject выглядел как

    sampleObject = {
        "child1": [
            {"id": "id1"},
            {"id": "id2"}
         ],
        "child2":[
            {"id": "id3"}
         ]
            };

Я пробовал что-то вроде Object.assign (sampleObject, "child2": ["id": "id3"]);из которых дает синтаксические ошибки.

Наверное, мой вопрос: возможно ли это через Object.assign, а если нет, то как я могу это сделать?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 02 октября 2019

С ES6 вы можете использовать три точки ...

sampleObject = {...sampleObject, {"child2": { "id" : "id3" }}
0 голосов
/ 02 октября 2019

Так что есть несколько способов сделать это. Самый простой способ - просто добавить новое свойство вручную.

const sampleObject = {
  child1: [
    {id: 'id1'},
    {id: 'id2'}
  ]
}

sampleObject.child2 = [{id: 'id3'}]

Если это не работает в ваших обстоятельствах, вы можете попробовать Object.defineProperty(). Узнайте больше о Object.defineProperty

const sampleObject = {
  child1: [
    {id: 'id1'},
    {id: 'id2'}
  ]
}

Object.defineProperty(sampleObject, 'child2', {
  value: [{id: 'id3'}]
})

Наконец, если вы хотите использовать Object.assign(), вы можете, но это в основном для объединения двух или более объектов. Это хороший способ указать значения по умолчанию, а затем при необходимости переопределить их. Подробнее об Object.assign

const sampleObject = {
  child1: [
    {id: 'id1'},
    {id: 'id2'}
  ]
}

const sampleObject2 = {
  child2: [
    {id: 'id3'}
  ]
}

Object.assign(sampleObject, sampleObject2)

Обновление: как уже упоминалось @Ryan Nghiem, вы также можете использовать оператор распространения (...) аналогичным образом, хотя я бы сказал,не рекомендуется переназначать исходную переменную. Это «разложит» каждое свойство исходного объекта как свойства нового. подробнее об операторе спреда

const sampleObject = {
  child1: [
    {id: 'id1'},
    {id: 'id2'}
  ]
}

const sampleObject2 = {
  ...sampleObject,
  child2: [
    {id: 'id3'}
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...