zoukankan      html  css  js  c++  java
  • 数组去重是面试中经常问到的问题

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

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

    效率最高:
  • 相关阅读:
    pm2
    php 基础知识
    EBADF, read
    php apache
    noah
    ejs
    node linux
    枚举系统进程
    c++ 进程权限的提升
    Liunx的目录结构
  • 原文地址:https://www.cnblogs.com/codepen2010/p/6900218.html
Copyright © 2011-2022 走看看