如何对比两个数组,找出数组中的差异

arr1: [{
                name: "品牌",
                num: 2,
            }, {
                name: "信息",
                num: 8
            }, {
                name: "厂家",
                num: 35
            }, {
                name: "商家",
                num: 42
            }],
  arr2: [{
                name: "品牌",
                num: 2,
            }, {
                name: "信息",
                num: 8
            }]
            

打印出两者对比的结果:厂家,商家

阅读 4.4k
2 个回答

2019-11-29更新

大数据量下不建议这么做(不建议使用JSON.stringify()),效率很低,还是用遍历吧.

原答案

如果不考虑num这个字段的话,可以这么做:

function arrayDiff (arr_1, arr_2) {
    let result = [];
    let arr_str = JSON.stringify(arr_2);
    result = result.concat(arr_1.filter(item => {
        let reg = new RegExp(`"name":"${item.name}"`, 'g');
        return !reg.test(arr_str);
    }));
    arr_str = JSON.stringify(arr_1);
    result = result.concat(arr_2.filter(item => {
        let reg = new RegExp(`"name":"${item.name}"`, 'g');
        return !reg.test(arr_str);
    }));
    return result;
}

let arr_1 = [{
                name: "品牌",
                num: 2,
            }, {
                name: "信息",
                num: 8
            }, {
                name: "厂家",
                num: 35
            }, {
                name: "商家",
                num: 42
            }];
let arr_2 = [{
                name: "品牌",
                num: 2,
            }, {
                name: "信息",
                num: 8
            }];
arrayDiff(arr_1, arr_2);

我个人的一种常用做法,仅供参考;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题