合并两个不同的对象数组,并同时返回匹配和不匹配的项,可以通过以下步骤实现:
以下是一个示例的JavaScript代码实现:
function mergeArrays(arr1, arr2) {
var matches = [];
var mismatches = [];
arr1.forEach(function(obj1) {
var foundMatch = false;
for (var i = 0; i < arr2.length; i++) {
var obj2 = arr2[i];
// 判断两个对象是否匹配,这里假设对象有一个属性叫做'id'
if (obj1.id === obj2.id) {
matches.push(obj2);
arr2.splice(i, 1); // 从第二个数组中移除匹配项
foundMatch = true;
break;
}
}
if (!foundMatch) {
mismatches.push(obj1);
}
});
mismatches = mismatches.concat(arr2); // 将第二个数组中剩余的项添加到不匹配数组中
return {
matches: matches,
mismatches: mismatches
};
}
// 示例用法
var array1 = [{id: 1, name: 'A'}, {id: 2, name: 'B'}, {id: 3, name: 'C'}];
var array2 = [{id: 2, name: 'B'}, {id: 4, name: 'D'}, {id: 5, name: 'E'}];
var result = mergeArrays(array1, array2);
console.log(result.matches); // 输出: [{id: 2, name: 'B'}]
console.log(result.mismatches); // 输出: [{id: 1, name: 'A'}, {id: 3, name: 'C'}, {id: 4, name: 'D'}, {id: 5, name: 'E'}]
这个算法通过遍历两个数组,比较对象的属性来判断是否匹配,并使用splice方法从第二个数组中移除匹配项。最后将剩余的项添加到不匹配数组中。返回一个包含匹配和不匹配数组的对象。
领取专属 10元无门槛券
手把手带您无忧上云