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

Posted 代码笔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组去重是面试中经常问到的问题相关的知识,希望对你有一定的参考价值。

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

[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.     }  

效率最高:




以上是关于数组去重是面试中经常问到的问题的主要内容,如果未能解决你的问题,请参考以下文章

面试官在“逗”你系列:数组去重你会几种呀?

面试官在“逗”你系列:数组去重你会几种呀?

记一次面试一直出现的题——数组去重

JavaScript之数组去重

交通银行太平洋信用卡中心的面试题:数组怎么去重?

js数组去重常用方法