替换javascript对象的共享属性

替换javascript对象的共享属性,javascript,object,Javascript,Object,我有两个javascript对象,它们共享几个属性 var object1 = {"prop1":"a", "prop2": "b", "prop3":"c"}; var object2 = {"prop2":"d", "prop4": "e", "prop5":"f"}; //replace shared properties here //maybe using object.hasOwnProperty??? return object1; //desired output: {"prop

我有两个javascript对象,它们共享几个属性

var object1 = {"prop1":"a", "prop2": "b", "prop3":"c"};
var object2 = {"prop2":"d", "prop4": "e", "prop5":"f"};
//replace shared properties here
//maybe using object.hasOwnProperty???
return object1;
//desired output: {"prop1":"a", "prop2": "d", "prop3":"c"};
我想使用
object1
作为模板将一组筛选器返回给我的用户,但是,筛选器可能会更改,这些更改将保存到object2。我试图用对象2中的属性更新对象1中的属性,但前提是它们同时存在于两个对象中。例如,在本例中,我希望采用
prop1
prop3
的默认值,使用object2的
prop2
值,并忽略
prop4
prop5
。 我可以很容易地遍历object1的属性并检查它们是否在object2中,但我觉得必须有一种更简单的方法来实现这一点(类似于
union()
intersection()

类似的方法

var object1={“prop1”:“a”、“prop2”:“b”、“prop3”:“c”}
var object2={“prop2”:“d”,“prop4”:“e”,“prop5”:“f”}
功能合并公用(a、b){
返回Object.keys(a).reduce((obj,prop)=>{
如果(b中的道具)obj[prop]=b[prop]
返回obj
},a)
}

log(mergeCommon(object1,object2))
一种方法是:

const object1={“prop1”:“a”,“prop2”:“b”,“prop3”:“c”};
const object2={“prop2”:“d”,“prop4”:“e”,“prop5”:“f”};
for(object1中的常量键){
if(object1.hasOwnProperty(键)和&object2.hasOwnProperty(键)){
object1[key]=object2[key];
}
}

console.log(object1)
您可以通过迭代
object1
的键并使用
object2
的值(如果存在)来构建输出

var object1={“prop1”:“a”,“prop2”:“b”,“prop3”:“c”};
var object2={“prop2”:“d”,“prop4”:“e”,“prop5”:“f”};
var输出={};
key(object1).forEach(函数(k){
输出[k]=(object2[k]==未定义?object1:object2)[k];
});

控制台日志(输出)我只以1比1击败你second@Tyrsius做得好。我想你的答案也会被认为更“现代”。如果
object2.prop2
是错误的,它不会传播到
object1.prop2
。(尝试使用
var object2={“prop2”:0,“prop4”:“e”,“prop5”:“f”};
@RickHitchcock谢谢!这是固定的。