新旧数据对比,找出增加的和删除的

新数据和旧数据对比,找出增加的和删除的,分别放在两个数组中

对比两个数组,先找到相同的,分别与原数组和新数组对比进行去重操作
数组为对象时,可以选择对象中唯一的属性进行对比

const values = await this.form.validateFields();
const {
    
     oldData } = this.state;//旧数据
let oldDataRepetition = [].concat(oldData);    //使用空数组合并,之后操作不改变原数组
const dataSource = values.companyInfo;//新数据
let dataSourceRepetition = [].concat(dataSource);
let someArr = [];   //相同的
for (let i = 0; i < dataSource.length; i++) {
    
    
    for (let j = 0; j < oldData.length; j++) {
    
    
        if (oldData[j].companyId.value === dataSource[i].companyId.value) {
    
    
            someArr.push(oldData[j]);
        }
    }
}

let deleteArr = [];  //删除的
for (let i = 0; i < someArr.length; i++) {
    
    
    for (let j = 0; j < oldDataRepetition.length; j++) {
    
    
        if (someArr[i].companyId.value === oldDataRepetition[j].companyId.value) {
    
    
            oldDataRepetition.splice(j, 1);    //去重
        }
    }
}
deleteArr = oldDataRepetition;

let addArr = [];  //增加的
for (let i = 0; i < someArr.length; i++) {
    
    
    for (let j = 0; j < dataSourceRepetition.length; j++) {
    
    
        if (someArr[i].companyId.value === dataSourceRepetition[j].companyId.value) {
    
    
            dataSourceRepetition.splice(j, 1);    //去重
        }
    }
}
addArr = dataSourceRepetition;

猜你喜欢

转载自blog.csdn.net/weixin_53125679/article/details/124019305