// 旧数组
let arr1 = [{id: 1, name: '张三', age: 22}, // 重复
{id: 3, name: '赵六', age: 25}, // 删除
{id: 6, name: '六六', age: 18}] // 修改 old
// 新数组
let arr2 = [
{id: 1, name: '张三', age: 22}, // 重复
{id: 4, name: '钱七', age: 26}, // 新增
{id: 6, name: '六六liu', age: 18}] // 修改 new
// 目标数组
// [
// { id: 1, name: '张三', age: 22, class: 'normal' },
// { id: 6, name: '六六', age: 18, class: 'old' },
// { id: 6, name: '六六liu', age: 18, class: 'new' },
// { id: 3, name: '赵六', age: 25, class: 'old' },
// { id: 4, name: '钱七', age: 26, class: 'new' }
// ]
let newArr = []
let num1 = []
let num2 = []
// 拿出arr1中对象的全部id
arr1.forEach(item => {
num1.push(item.id)
})
// 拿出arr2中对象的全部id
arr2.forEach(item => {
num2.push(item.id)
})
arr1.forEach(item => {
arr2.forEach(i => {
// 筛选出重复的对象数据
if (i.id == item.id && i.name == item.name && i.age == item.age) {
newArr.push({...i, class: 'normal'});
// 筛选出修改的对象数据
}else if(i.id == item.id && (i.name != item.name || i.age != item.age)){
newArr.push({...item, class: 'old'});
newArr.push({...i, class: 'new'});
}
})
})
// 筛选出删除的对象数据
arr1.forEach((item, i) => {
if(!num2.includes(item.id)) {
newArr.push({...item, class: 'old'})
}
})
// 筛选出新增的对象数据
arr2.forEach((item, i) => {
if(!num1.includes(item.id)){
newArr.push({...item, class: 'new'})
}
})
console.log(newArr)
本文介绍了一种方法来比较并合并两个对象数组,通过检查每个元素的ID来确定哪些条目是新增、删除或修改的,并为每个条目标记状态。
577

被折叠的 条评论
为什么被折叠?



