Как объединить с вложенным ключом в оператор распространения JavaScript? - PullRequest
3 голосов
/ 10 мая 2019

У меня есть следующие объекты, такие как

obj1 = { key1: { a: 1}}

Я хочу объединить следующий объект с указанным выше

key1 = { b: 2}

Я хочу получить следующий результат, объединив key1 с существующим ключом в первом объекте.

{key1: {a: 1, b: 2}} 

Как я могу сделать это с помощью оператора распространения в JavaScript? Заранее спасибо.

Ответы [ 5 ]

3 голосов
/ 10 мая 2019

Вы можете распространять как существующий, так и новый объект

Примечание: Использование оператора распространения будет объединять только перечисляемые свойства.

const obj1 = { key1: { a: 1}}
const key1 = { b: 2};
const res = {...obj1,key1:{...obj1.key1,...key1}};
console.log(res)

Если вы хотите изменить исходный объект, измените только obj.key1

const obj1 = { key1: { a: 1}}
const key1 = { b: 2};
obj1.key1 = {...obj1.key1,...key1}
console.log(obj1)
1 голос
/ 10 мая 2019

Просто используйте оператор спреда так:

let obj1 = {
  key1: {
    a: 1
  }
};

let key1 = {
  b: 2
};

obj1.key1 = { ...obj1.key1, ...key1 };
console.log(obj1);
.as-console-wrapper { max-height: 100% !important; top: auto; }
0 голосов
/ 10 мая 2019

Попробуйте это:

let obj1 = { key1: { a: 1}}

let b = { b: 2}
let a = obj1.key1; //{a:1}

// merge using spread operator
let key1 = {...a, ...b}; //{a:1, b:2}

obj1.key1 = key1; //{"a":1,"b":2"}

console.log(obj1) //{ "key1":{"a":1,"b":2"}}
0 голосов
/ 10 мая 2019

Вы должны использовать Object.assign

var obj1 = { key1: { a: 1}};
var key1 = { b: 2};

Object.assign(obj1.key1, key1);

console.log(obj1)
0 голосов
/ 10 мая 2019

Вы можете добавить его в требуемое свойство.

var obj1 = { key1: { a: 1 } },
    key1 = { b: 2 };
    
obj1.key1 = { ...obj1.key1, ...key1 };

console.log(obj1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...