求对象数组的差集

求对象数组的差集是我在开发中遇到的一个需求,场景是这样:用户第一次选择了1、2、3对象,并确定保存进了数据库,用户第二次进入的时候觉得不对,选择了3、4、5对象,然后保存进数据库。

这么一个需求的分析有:用户第二次选择的时候,3是不用做处理的,4、5是要新插入数据库的,而1、2是要在数据库中删除的,得给标识让数据库脚本识别并进行删除,不然就是垃圾数据

对于求对象数组的差集,我是想不到有什么其他高效的方法了,以下是我的处理方式,state为3表明是要进行删除的对象

 // 第一次选择
 var temp = [{ id: "1", state: 1 }, { id: "2", state: 1 }, { id: "3", state: 1 }];
 // 第二次选择
 var selected = [{ id: "3", state: 1 }, { id: "4", state: 1 }, { id: "5", state: 1 }];
 // 最终保存
 var save = [];
 function test() {
     for (var i = 0; i < temp.length; i++) {
         var flag = false;
         for (var j = 0; j < selected.length; j++) {
             if (temp[i].id == selected[j].id) {
                 flag = false;
                 break;
             }
             else {
                 flag = true;
             }
         }
         if (flag) {
             temp[i].state = 3;
             save.push(temp[i]);
         }
     }
     for (var i = 0; i < selected.length; i++) {
         var flag = false;
         for (var j = 0; j < temp.length; j++) {
             if (selected[i].id == temp[j].id) {
                 flag = false;
                 break;
             }
             else {
                 flag = true;
             }
         }
         if (flag) {
             save.push(selected[i]);
         }
     }
     console.log("差集结果", save);
 }
 test();

在这里插入图片描述

发布了28 篇原创文章 · 获赞 1 · 访问量 8735

猜你喜欢

转载自blog.csdn.net/moqiuqin/article/details/94771267