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


    前两天做的项目中,需要实现两个数组之间进行比较!找出哪个是新增的项,哪些是删除的项!(前提是我们这两数组中不会有重复的项!而且每项都是一个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));//测试

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

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

  • 相关阅读:
    EOF:getchar()函数返回的一个特殊值
    elementUI的el-select使用filterable无效
    element table单元格相关的样式
    关于前端权限的一点想法--续
    IE浏览器与PDF文件
    vue form表单数据无法修改
    computed数据变动,table加载不全
    vue插件开发(本地使用)
    element table
    对象删除(消耗时间验证)
  • 原文地址:https://www.cnblogs.com/daniao11417/p/7503549.html
Copyright © 2020-2023  润新知