新数据和旧数据对比,找出增加的和删除的,分别放在两个数组中
对比两个数组,先找到相同的,分别与原数组和新数组对比进行去重操作
数组为对象时,可以选择对象中唯一的属性进行对比
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;