如何将对象B中与对象A同名的属性值赋值给对象A
实现方法
核心逻辑是仅遍历目标对象objectA的自有属性,匹配到objectB上的同名属性时再执行赋值,不会额外新增objectA不存在的属性。
首先先修正你示例中objectB的语法问题(两处属性名后缺失冒号),以下是可直接运行的代码:
基础兼容写法
适用于所有JS运行环境,兼容性最好:
const objectA = { valueOne: null, valueTwo: null } const objectB = { valueZero: 'joe', valueOne: 'john', valueTwo: 'jesse', valueThree: 'jessica', valueFour: 'jojo' } for (const key in objectA) { // 过滤原型链上的继承属性,只处理对象自身的属性 if (objectA.hasOwnProperty(key) && objectB.hasOwnProperty(key)) { objectA[key] = objectB[key] } }
运行后objectA的输出结果和你要求的一致。
现代简洁写法
ES6+环境可用,代码更简洁:
Object.keys(objectA).forEach(key => { if (key in objectB) { objectA[key] = objectB[key] } })
生成新对象(不修改原objectA)
如果需要保留原objectA不变,生成一个新的对象,可以用以下写法:
const newObjectA = Object.fromEntries( Object.keys(objectA).map(key => [ key, // 若objectB无对应属性则保留objectA的原值 objectB.hasOwnProperty(key) ? objectB[key] : objectA[key] ]) )
内容的提问来源于stack exchange,提问作者seyet
相关产品推荐
相关产品推荐

