/**
* 方法名:
* 功能介绍:返回一个对象里面包含后一个数组比第一个数组增加、减少的数据(适用于去重过后的数组)
* 参数:
* beforeArr:前一个数组
* afterArr:后一个数组
*/
const compare = (beforeArr, afterArr) => {
let resObj = {
insertList: [],
deleteList: [],
updateList: [],
isChange: false,
};
let cenMab = new Map();
//把beforeArr数组去重放入cenObj
for (let i = 0; i < beforeArr.length; i++) {
cenMab.set(JSON.stringify({
code: beforeArr[i].code, //比对的关键字段code
}), beforeArr[i])
}
//遍历afterArr,查看其元素是否在cenObj中
for (let j = 0; j < afterArr.length; j++) {
let typeOne = JSON.stringify({
code: afterArr[j].code,
})
if (cenMab.has(typeOne)) {
//比对有变化的字段price
if (cenMab.get(typeOne).price != afterArr[j].price) {
resObj.isChange = true;
resObj.updateList.push(afterArr[j].code);
}
let r1 = cenMab.delete(typeOne)
} else {
resObj.isChange = true;
resObj.insertList.push(afterArr[j].code);
}
}
// 遍历push剩余删除的数据
for (let item of cenMab.values()) {
resObj.isChange = true;
resObj.deleteList.push(item.code);
}
return resObj
}