/** * 方法名: * 功能介绍:返回一个对象里面包含后一个数组比第一个数组增加、减少的数据(适用于去重过后的数组) * 参数: * 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 }
标签:返回,afterArr,cenMab,code,let,数组,beforeArr,好用,resObj From: https://www.cnblogs.com/moon-yyl/p/18357215