JavaScript 比较两个对象数组的差异:高效算法与代码示例
要获取两个对象数组的不同之处,可以按以下步骤进行:
-
创建一个空数组 'differences',用于存储两个对象数组的不同之处。
-
遍历第一个对象数组,对于每个对象,检查它是否存在于第二个对象数组中。
-
如果当前对象不存在于第二个对象数组中,则将其添加到 'differences' 数组中。
-
重复步骤 2 和步骤 3,但这次遍历第二个对象数组并检查每个对象是否存在于第一个对象数组中。
-
返回 'differences' 数组,其中包含两个对象数组的不同之处。
下面是一个示例代码实现:
function getDifferences(arr1, arr2) {
const differences = [];
// 检查 arr1 中的对象是否存在于 arr2 中
arr1.forEach(obj => {
if (!arr2.some(item => isEqual(obj, item))) {
differences.push(obj);
}
});
// 检查 arr2 中的对象是否存在于 arr1 中
arr2.forEach(obj => {
if (!arr1.some(item => isEqual(obj, item))) {
differences.push(obj);
}
});
return differences;
}
// 判断两个对象是否相等的辅助函数
function isEqual(obj1, obj2) {
return JSON.stringify(obj1) === JSON.stringify(obj2);
}
// 示例用法
const arr1 = [{ id: 1, name: 'John' }, { id: 2, name: 'Alice' }, { id: 3, name: 'Bob' }];
const arr2 = [{ id: 2, name: 'Alice' }, { id: 3, name: 'Bob' }, { id: 4, name: 'Tom' }];
const differences = getDifferences(arr1, arr2);
console.log(differences);
// 输出: [{ id: 1, name: 'John' }, { id: 4, name: 'Tom' }]
在上面的示例中,我们使用 'getDifferences' 函数来获取 'arr1' 和 'arr2' 之间的不同之处。该函数使用 'isEqual' 辅助函数来判断两个对象是否相等。最后,我们将不同之处存储在 'differences' 数组中并输出结果。
原文地址: https://www.cveoy.top/t/topic/qmuI 著作权归作者所有。请勿转载和采集!