好用的方法,数组对象比较并返回差异
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | /** * 方法名: * 功能介绍:返回一个对象里面包含后一个数组比第一个数组增加、减少的数据(适用于去重过后的数组) * 参数: * 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 } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业