JS合并多个数组去重算法

 
  1. var arr1 = ['a','b'];  
  2. var arr2 = ['a','c','d'];  
  3. var arr3 = [1,'d',undefined,true,null];
  4. //合并两个数组,去重  
  5. var concat_ = function(arr1,arr2){  
  6.     //不要直接使用var arr = arr1,这样arr只是arr1的一个引用,两者的修改会互相影响  
  7.     var arr = arr1.concat();  
  8.     //或者使用slice()复制,var arr = arr1.slice(0)  
  9.     for(var i=0;i<arr2.length;i++){  
  10.         arr.indexOf(arr2[i]) === -1 ? arr.push(arr2[i]) : 0;  
  11.     }  
  12.     return arr;  
  13. }  

 

  1. //合并多个数组,去重  
  2. var concat = function(arr1,arr2,arr3){  
  3.     if(arguments.length <= 1){  
  4.         return false;  
  5.     }  
  6.     var concat_ = function(arr1,arr2){  
  7.         var arr = arr1.concat();  
  8.         for(var i=0;i<arr2.length;i++){  
  9.             arr.indexOf(arr2[i]) === -1 ? arr.push(arr2[i]) : 0;  
  10.         }  
  11.         return arr;  
  12.     }  
  13.     var result = concat_(arr1,arr2);  
  14.     for(var i=2;i<arguments.length;i++){  
  15.         result = concat_(result,arguments[i]);  
  16.     }  
  17.     return result;  
  18. }  

     

  19. //合并多个数组,去重,排序  
  20. var arr1 = [1,6,4,0];  
  21. var arr2 = [8,20,7,4.5];  
  22. var arr3 = [6,0,7,90,2];  
  23.   
  24. var concat = function(arr1,arr2,arr3){  
  25.     if(arguments.length <= 1){  
  26.         return false;  
  27.     }  
  28.     var concat_ = function(arr1,arr2){  
  29.         var arr = arr1.concat();  
  30.         for(var i=0;i<arr2.length;i++){  
  31.             arr.indexOf(arr2[i]) === -1 ? arr.push(arr2[i]) : 0;  
  32.         }  
  33.         return arr;  
  34.     }  
  35.     var result = concat_(arr1,arr2);  
  36.     for(var i=2;i<arguments.length;i++){  
  37.         result = concat_(result,arguments[i]);  
  38.     }  
  39.     //排序  
  40.     function sortNumber(a,b){  
  41.         return a - b;  
  42.     }  
  43.     return result.sort(sortNumber);  
  44. }  
 
 
//查找两个数组的重复项
代码如下:
    var desk=function(arr1,arr2){
        var arr=[];
        for(var i=0;i<arr2.length;i++){
            if(arr1.indexOf(arr2[i])!==-1){
                arr.push(arr2[i]);
            }
        }
        return arr;
    };
    var a=desk([1,2,4,5,6,7,8],[2,3,4,5,7,8]);
    console.log(a);  //[2,4,6,7,8]

转载于:https://www.cnblogs.com/ljk001/p/8004626.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值