У меня есть два объекта 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) . Сохраняйте только общие ключи во втором объекте.
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);
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)
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.