以下是一个使用JavaScript比较嵌套对象并将差异保存在新对象中的解决方案示例:
function compareObjects(obj1, obj2) {
var diff = {};
for (var key in obj1) {
if (obj1.hasOwnProperty(key)) {
// 检查obj1的属性是否存在于obj2中
if (obj2.hasOwnProperty(key)) {
// 递归比较嵌套对象
if (typeof obj1[key] === 'object' && typeof obj2[key] === 'object') {
var nestedDiff = compareObjects(obj1[key], obj2[key]);
if (Object.keys(nestedDiff).length > 0) {
diff[key] = nestedDiff;
}
} else if (obj1[key] !== obj2[key]) {
// 属性值不相等,保存差异
diff[key] = obj2[key];
}
} else {
// 属性在obj2中不存在,保存差异
diff[key] = obj1[key];
}
}
}
return diff;
}
// 示例使用
var obj1 = {
name: 'John',
age: 30,
address: {
street: '123 Main St',
city: 'New York'
}
};
var obj2 = {
name: 'John',
age: 35,
address: {
street: '123 Main St',
city: 'New York'
}
};
var diff = compareObjects(obj1, obj2);
console.log(diff);
上述代码将比较obj1
和obj2
两个嵌套对象,并将差异保存在一个新对象diff
中。在这个示例中,obj1
和obj2
的age
属性值不同,因此diff
对象将会包含{ age: 35 }
。
上一篇:比较嵌套的列表与一个列表
下一篇:比较嵌套对象并添加缺失的元素