Есть ли способ использовать оператор распространения, чтобы объединить два объекта так, чтобы в результате были ключи одного объекта, а значения второго? - PullRequest
1 голос
/ 29 октября 2019

У меня есть два объекта js.

Object1 ={a:'a1',b:'b1'}

Object2 ={b:'b2',c:'c2'}

Моя цель - использовать операторы спреда для создания нового объекта с ключами объекта 1 и значениями объекта 2.

Использование обычного оператора слияния слияния:

newObject = {...Object1,...Object2} 

При столкновении все еще будут добавлены все ключи и значения из объекта 2 к результирующему объекту.

newObjectWithNormalSpreadoperator = {a:'a1',b:'b2',c:'c2'}

Я хотел бы создать новый объект, который имеет все ключи объекта 1и значения объекта 2. для общих ключей.

newObjectThatIWant = {a:'a1',b:'b2'}

Есть ли способ сделать это с помощью операторов распространения?

Ответы [ 2 ]

1 голос
/ 29 октября 2019

1) Храните только общие ключи во втором объекте.

2) Затем используйте оператор распространения.

let obj1 ={a:'a1',b:'b1'};
let obj2 ={b:'b2',c:'c2'};

let obj2Shared = Object.keys(obj2).reduce((acc, currKey) => {
  if (obj1[currKey]) {
    acc[currKey] = obj2[currKey];
  }
  return acc;
}, {});

let combined = {...obj1, ...obj2Shared};

console.log(combined);
0 голосов
/ 29 октября 2019

let Object1 ={a:'a1',b:'b1'}
let Object2 ={b:'b2',c:'c2'}
let newObject = {};
Object.keys(Object1).forEach(key => {
  newObject[key] = typeof Object2[key] != "undefined" ? Object2[key] : Object1[key];
});

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