前两天做的项目中,需要实现两个数组之间进行比较!找出哪个是新增的项,哪些是删除的项!(前提是我们这两数组中不会有重复的项!而且每项都是一个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));//测试
这个方法其实是比较繁琐的,因为循环套循环,这样运算量是成指数增加的,好在我们这个数组的项不是很多,否则就……
欢迎大家提意见!一起参与讨论