好用的方法,数组对象比较并返回差异

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
}

  

posted on   朝颜陌  阅读(15)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
< 2025年2月 >
26 27 28 29 30 31 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 1
2 3 4 5 6 7 8

导航

统计

点击右上角即可分享
微信分享提示