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