关于数组对比的一个小函数!

前两天做的项目中,需要实现两个数组之间进行比较!找出哪个是新增的项,哪些是删除的项!(前提是我们这两数组中不会有重复的项!而且每项都是一个JSON,里面的emplId是区分的标识);

下面直接看函数,虽然显得比较繁琐,但是理解起来还是非常容易的!

 1 function checkmen(older,newer){
 2     var jsondata={"add":[],
 3     "del":[]};//用于数组返回值
 4     for(var i=0;i<older.length;i++){
 5         var num=0;
 6         for (var j=0;j<newer.length;j++) {
 7             if(older[i].emplId==newer[j].emplId){
 8                 
 9             }else{
10                 num++;//判断数组中原来的项里面和新的数组中每项进行对比,如果不一样的话,那就给标志num加1;
11             }
12         }
13         if(num==newer.length){//如果不相同的次数和新数组的长度相同,也就是说明这项是已经被删除了!这里就可以把这个删除的项存储起来了!
14             jsondata.del.push(older[i])
15         }
16     }
17     for(var i=0;i<newer.length;i++){//这次是刚刚相反,可以得到新增的项。
18         var num=0;
19         for (var j=0;j<older.length;j++) {
20             if(newer[i].emplId==older[j].emplId){
21                 
22             }else{
23                 num++;
24             }
25         }
26         if(num==older.length){
27             jsondata.add.push(newer[i])
28         }
29     }
30     return jsondata;//返回json数据,如果没有新增和删除的项,则这个字段返回空数组!
31 }
32 var older=[{"emplId":001},{"emplId":002},{"emplId":003},{"emplId":007}];
33 var newer=[{"emplId":005},{"emplId":004},{"emplId":003}];
34 var data1 = checkmen(older,newer);
35 console.log(JSON.stringify(data1.del));//测试

这个方法其实是比较繁琐的,因为循环套循环,这样运算量是成指数增加的,好在我们这个数组的项不是很多,否则就……

欢迎大家提意见!一起参与讨论

原文地址:https://www.cnblogs.com/daniao11417/p/7503549.html