Javascript 有没有办法使用spread操作符合并两个对象,使结果具有一个对象的键,但具有第二个对象的值?

Javascript 有没有办法使用spread操作符合并两个对象,使结果具有一个对象的键,但具有第二个对象的值?,javascript,object,Javascript,Object,我有两个js对象 Object1 ={a:'a1',b:'b1'} Object2 ={b:'b2',c:'c2'} 我的目标是使用扩展操作符创建一个新对象,其中包含对象1的键和对象2的值 使用普通排列运算符合并: newObject = {...Object1,...Object2} 碰撞仍然会将对象2中的所有关键帧和值附加到结果对象上 newObjectWithNormalSpreadoperator = {a:'a1',b:'b2',c:'c2'} 我想创建一个新对象,其中包含对

我有两个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'}
有没有一种方法可以使用扩展运算符来执行此操作?

let Object1={a:'a1',b:'b1'}
让Object2={b:'b2',c:'c2'}
让newObject={};
Object.key(Object1.forEach)(key=>{
newObject[key]=Object2[key]的类型!=“未定义”?Object2[key]:Object1[key];
});
console.log(newObject)
1)仅在第二个对象中保留共享密钥

2)然后使用扩展运算符

设obj1={a:'a1',b:'b1'};
设obj2={b:'b2',c:'c2'};
让obj2Shared=Object.keys(obj2).reduce((acc,currKey)=>{
如果(obj1[当前键]){
acc[currKey]=obj2[currKey];
}
返回acc;
}, {});
让组合={…obj1,…obj2Shared};

控制台日志(组合)这是我当前解决方案的一个稍微好一点的实现。我只是想看看是否有任何内置的方法可以做到这一点。例如,
Object2={b:null}
(或任何其他falsy值)会失败。您只需检查
是否包含在
键(Object2)
中,而不是试图巧妙地使用
|
运算符。@sloth我想这是真的。对于我的特定应用程序,我不关心falsy值,但对于其他可能不是这样的应用程序。@sloth这不会失败,因为
Object1[key]
每次都有值,您可以test@BahadorRaghibizadeh-如果
Object1={b:false}
Object2={b:0}
然后这将获取
Object1
b
false
,而不是
0