zoukankan      html  css  js  c++  java
  • javascript数组去重

    JS的数组去重也是前端面试经常问到的问题,之前有一次面试就遇到让我写数组去重,而且一般这个问题都伴随着多写一种多加分的情况,所以掌握的方法自然多多益善。

    网上可以找到很多数组去重的方法,我自己整理了一下以供今后自己复习。

    利用indexOf:

    最简单的方法就是利用indexOf方法来实现数组去重,但这个方法有一个缺点就是老版本浏览器不支持

    function unique(arr){
        var newArr = []
        for(var i=0,len=arr.length;i++){
            var item = arr[i]
            if(newArr.indexOf(item) == -1){
                newArr.push(item)
            }
        }
        return newArr
    }

    利用hash表:

    function unique(arr){
       var hash = {}
       var result = []
       for(var i=0,len=arr.length;i<len;i++){    
           if(!hash[arr[i]]){
                result.push(arr[i])
                hash[arr[i]] = true
           }     
       } 
       return result
    }

    数组去重升级版:

    这是我在面试时遇到的题,要求是这样的,不仅要对数组去重,而且还要输出重复数据重复的次数。做法其实就是hash表去重法的改进而已。

    function unique(arr){
         var hash = {}
         var result = []
         for(var i=0,len=arr.length;i<len;i++){
             if(!hash[arr[i]]){
                 hash[arr[i]] = 1
                 result.push(arr[i]) 
             }else{
                 hash[arr[i]] += 1
             }
         }
         
         console.log("去重后的数组为:"+result)
         console.log("数据重复的情况为:")
         for(var key in hash){
             if(hash[key]>1){
               console.log(key+":"+hash[key])
             }
         } 
    }            
  • 相关阅读:
    MyBatis查询没有数据返回值为list还是null--------采坑
    Java弱引用WeakReference详细讲解
    idea debug调试详细教程
    [Docker]Dockerfile指令
    [Docker]Dockerfile定制容器
    [Docker]tomcat 404
    [Docker]容器操作
    [Docker]镜像操作
    [Docker]docker-ce安装
    [CentOS7]安装界面直接修改eth0
  • 原文地址:https://www.cnblogs.com/minz/p/5971410.html
Copyright © 2011-2022 走看看