如何在JavaScript中比较两个对象并创建值不同的新对象
提取两个JavaScript对象的差异属性生成新对象
当然可以实现这个需求,下面给你两种常见的处理方式:
一、针对已知差异属性的简单写法
如果已经明确只有name属性存在差异,可以直接创建目标对象:
var obj1={ name:"jhon", age:"26", role:"intern" } var obj2={ name:"jhon berner", age:"26", role:"intern" } var newobj = { name: obj2.name }
二、通用差异提取函数(适合多属性场景)
如果后续对象属性可能增加,或者不确定具体哪些属性有差异,可以写一个通用函数,自动对比两个对象的所有属性,收集obj2中与obj1不同的属性:
传统循环写法
function getDiffObj(objA, objB) { const diff = {}; for (const key in objB) { if (objA[key] !== objB[key]) { diff[key] = objB[key]; } } return diff; } var newobj = getDiffObj(obj1, obj2); // 输出结果:{ name: "jhon berner" }
ES6简洁写法
const getDiffObj = (objA, objB) => Object.entries(objB).reduce((diff, [key, value]) => { objA[key] !== value && (diff[key] = value); return diff; }, {}); var newobj = getDiffObj(obj1, obj2);
以上两种方式都能生成你需要的newobj对象。
内容的提问来源于stack exchange,提问作者shashank
相关产品推荐
相关产品推荐

