实现数组去重?

数组去重是面试中经常问到的问题

[html]  view plain  copy
  1. var arr=[1,3,4,52,4,5,4,8,7,6];  


第一种方法:使用ES5中的indexOf进行去重:
[javascript]  view plain  copy
  1. function arr1(){  
  2.       var n=[];  
  3.        for(var i=0;i<arr.length;i++){  
  4.            if(n.indexOf(arr[i])==-1){  
  5.                n.push(arr[i]);  
  6.            }  
  7.        }  
  8.        return n;  
  9.    }//先定义一个空数组,然后遍历数组,使用indexOf检查是否含有重复元素,如果没有则插入到n中。使用此类方法应考虑ES5的兼容性问题  
[javascript]  view plain  copy
  1.   

运行结果如下:
第二种方法:先排序后然后再相邻比较去重
[javascript]  view plain  copy
  1. function arr3(){  
  2.          arr.sort();  
  3.         var re=[arr[0]];  
  4.         for(var i=1;i<arr.length;i++){  
  5.             if(arr[i]!==re[re.length-1]){  
  6.                 re.push(arr[i]);  
  7.   
  8.             }  
  9.         }  
  10.         return re;  
  11.     }  
此种方法比第一种效率更好:
第三种方法:使用map去重
[javascript]  view plain  copy
  1. function arr4(arr){  
  2.         var map={};  
  3.         if(arr&&Array.isArray(arr)){  
  4.             for(var i=arr.length;i>=0;--i){  
  5.                 if(arr[i] in map){  
  6.                     arr.splice(arr[i],1);  
  7.                 }else{  
  8.                     map[arr[i]] = true;  
  9.                 }  
  10.             }  
  11.         }  
  12.         return arr;  
  13.   
  14.     }  

效率最高:

猜你喜欢

转载自blog.csdn.net/xiaoxiaopiao/article/details/79618959