对json格式的数据进行去重合并,json格式数据,删除arr1 中 有arr2的数据

755 阅读3分钟

应用场景

    购物车的添加删除,某人员添加删除....

需要处理的数据

let arr1 = 
[
    {
        "userGuid": "b31f3070-5628-4de8-859f-a39bf6d044d7",
        "userName": "陈时雨",
        "unitGuid": null,
        "userNumber": "0071",
        "cardNumber": "0071",
        "departmentGuid": "7dafa3d8-f2b9-413a-9f5d-c56422d76bc7",
        "departmentName": "天健一年级"
    },
    {
        "userGuid": "d9df6276-3451-41e5-b083-57524e2cd74c",
        "userName": "test001",
        "unitGuid": null,
        "userNumber": "001",
        "cardNumber": "001",
        "departmentGuid": "7dafa3d8-f2b9-413a-9f5d-c56422d76bc7",
        "departmentName": "天健一年级"
    },
    {
        "userGuid": "da830a86-b97f-4c33-8fdc-432a9ede9e67",
        "userName": "何朝彬",
        "unitGuid": null,
        "userNumber": "1076424594",
        "cardNumber": "1076424594",
        "departmentGuid": "2e0b0f33-c684-4d4d-9fbb-adcbf70fae26",
        "departmentName": "一年级一班"
    },
]
let arr2 = [
    {
        "userGuid": "b31f3070-5628-4de8-859f-a39bf6d044d7",
        "userName": "陈时雨",
        "unitGuid": null,
        "userNumber": "0071",
        "cardNumber": "0071",
        "departmentGuid": "7dafa3d8-f2b9-413a-9f5d-c56422d76bc7",
        "departmentName": "天健一年级"
    }
]

json格式的数据进行去重合并

/**
 * json数据数组去重并合并
 * @param {数组1} arr1 
 * @param {数组2} arr2 
 * @param {共同的标识} key 
 */
function getRemoval(arr1, arr2, key) {
    let arr = [...arr1, ...arr2];
    let obj = {};
    let newarr = [];
    for (const value of arr) {
        // 利用对象的唯一性进行判断
        if (!obj[value[key]]) {
            // 不含有该对象就push到新数组
            obj[value[key]] = true;
            newarr.push(value);
        }
    }
    return newarr;
}

返回的结果

[
    {
        "userGuid": "b31f3070-5628-4de8-859f-a39bf6d044d7",
        "userName": "陈时雨",
        "unitGuid": null,
        "userNumber": "0071",
        "cardNumber": "0071",
        "departmentGuid": "7dafa3d8-f2b9-413a-9f5d-c56422d76bc7",
        "departmentName": "天健一年级"
    },
    {
        "userGuid": "d9df6276-3451-41e5-b083-57524e2cd74c",
        "userName": "test001",
        "unitGuid": null,
        "userNumber": "001",
        "cardNumber": "001",
        "departmentGuid": "7dafa3d8-f2b9-413a-9f5d-c56422d76bc7",
        "departmentName": "天健一年级"
    },
    {
        "userGuid": "da830a86-b97f-4c33-8fdc-432a9ede9e67",
        "userName": "何朝彬",
        "unitGuid": null,
        "userNumber": "1076424594",
        "cardNumber": "1076424594",
        "departmentGuid": "2e0b0f33-c684-4d4d-9fbb-adcbf70fae26",
        "departmentName": "一年级一班"
    },
]

json格式的删除arr1 中 有arr2的数据

/**
 * 删除json格式的arr1数组中arr2有的数据
 * @param {数组1} arr1 
 * @param {数组2} arr2 
 * @param {共同的标识} key 
 */
function getDelArr(arr1, arr2, key) {
    const userGuid1 = arr2.map(v => v[key]);
    const newArr1sp = arr1.filter(item => !userGuid1.includes(item[key]));
    const userGuid2 = arr1.map(v => v[key]);
    const newArr2sp = arr2.filter(item => !userGuid2.includes(item[key]));
    const newArr = [...newArr1sp, ...newArr2sp]
    return newArr;
}

返回的结果

[
    {
        "userGuid": "d9df6276-3451-41e5-b083-57524e2cd74c",
        "userName": "test001",
        "unitGuid": null,
        "userNumber": "001",
        "cardNumber": "001",
        "departmentGuid": "7dafa3d8-f2b9-413a-9f5d-c56422d76bc7",
        "departmentName": "天健一年级"
    },
    {
        "userGuid": "da830a86-b97f-4c33-8fdc-432a9ede9e67",
        "userName": "何朝彬",
        "unitGuid": null,
        "userNumber": "1076424594",
        "cardNumber": "1076424594",
        "departmentGuid": "2e0b0f33-c684-4d4d-9fbb-adcbf70fae26",
        "departmentName": "一年级一班"
    },
]