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

这段代码展示了如何在JavaScript中对比两个对象数组,找出新增和删除的元素。通过遍历并比较`oldData`(旧数据)和`dataSource`(新数据)中的`companyId.value`属性,将相同项放入`somArr`,然后分别从原始数组中删除这些相同项,得到`deleteArr`(删除的元素)和`addArr`(增加的元素)。整个过程确保了原数组不被直接修改。
摘要由CSDN通过智能技术生成

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

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

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;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java中的集合操作实现这个需求。具体地,我们可以使用集合的差集、交集和并集操作来找出新增的学生和删除的学生。 假设我们有两个集合 `oldStudents` 和 `newStudents`,分别表示旧数据和新数据中的学生。我们可以按照以下步骤找出新增的学生和删除的学生: 1. 找出新增的学生:将 `newStudents` 集合减去 `oldStudents` 集合,得到的结果就是新增的学生。具体地,可以使用 `newStudents.removeAll(oldStudents)` 方法来实现。 2. 找出删除的学生:将 `oldStudents` 集合减去 `newStudents` 集合,得到的结果就是删除的学生。具体地,可以使用 `oldStudents.removeAll(newStudents)` 方法来实现。 下面是一个简单的示例代码: ```java import java.util.ArrayList; import java.util.List; public class Student { private int id; private String name; public Student(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public String getName() { return name; } public static void main(String[] args) { List<Student> oldStudents = new ArrayList<>(); oldStudents.add(new Student(1, "Tom")); oldStudents.add(new Student(2, "Jerry")); oldStudents.add(new Student(3, "Alice")); List<Student> newStudents = new ArrayList<>(); newStudents.add(new Student(2, "Jerry")); newStudents.add(new Student(3, "Alice")); newStudents.add(new Student(4, "Bob")); // 找出新增的学生 List<Student> addedStudents = new ArrayList<>(newStudents); addedStudents.removeAll(oldStudents); System.out.println("新增的学生:"); for (Student student : addedStudents) { System.out.println(student.getId() + " " + student.getName()); } // 找出删除的学生 List<Student> removedStudents = new ArrayList<>(oldStudents); removedStudents.removeAll(newStudents); System.out.println("删除的学生:"); for (Student student : removedStudents) { System.out.println(student.getId() + " " + student.getName()); } } } ``` 在上面的示例中,我们定义了一个 `Student` 类表示学生信息。然后我们创建了两个集合分别表示旧数据和新数据中的学生。最后使用集合操作找出新增的学生和删除的学生,并打印输出它们的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值