假设我们有两个对象数组oldArr和newArr。我们可以编写以下函数来比较它们并返回新的不同对象数组。
function compareArrayObjects(oldArr, newArr) {
let resultArr = [];
newArr.forEach(function(newObj) {
let matchedObj = oldArr.find(function(oldObj) {
return oldObj.id === newObj.id;
});
if (!matchedObj) {
resultArr.push(newObj);
} else {
// Compare properties of two objects
let isDifferent = Object.keys(newObj).some(function(key) {
return newObj[key] !== matchedObj[key];
});
if (isDifferent) {
resultArr.push(newObj);
}
}
});
return resultArr;
}
以上函数会遍历newArr并查找与oldArr的匹配项,然后比较两个对象的属性值。如果newArr中的对象是新的或不同于旧对象,则将其添加到结果数组中。
示例用法:
let oldArr = [
{ id: 1, name: "Alice", age: 25 },
{ id: 2, name: "Bob", age: 30 }
];
let newArr = [
{ id: 1, name: "Alice", age: 25 },
{ id: 2, name: "Bob", age: 30 },
{ id: 3, name: "Charlie", age: 35 },
{ id: 4, name: "David", age: 40 }
];
let resultArr = compareArrayObjects(oldArr, newArr);
console.log(resultArr);
// Output: [{ id: 3, name: "Charlie", age: 35}, { id: 4, name: "David", age: 40}]
以上代码将输出newArr中与oldArr不同或新增的对象。