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

    1、方法一:双层循环,外层循环元素,内层循环做比较,若相同则跳过,不同则加入结果集中,获取没重复的最右侧的值放入数组中

    Array.prototype.distinct = function(){
      var arr = this;
      var result = [];
      var len = arr.length;
      for(var i=0;i<len;i++){
        for(var j=i+1;j<len;j++){
          if(arr[i]===arr[j]){
            j = ++i;//出现相同的值,将j置为++i,即进入新一轮的循环
          }
        }
        result.push(arr[i])
      }
      return result;
    }

     2、方法二:利用splice直接在原数组中删除

    Array.prototype.distinct = function(){
        var arr = this,
        len = arr.length;
        for(var i=0;i<len;i++){
            for(var j = i+1; j<len;j++){
                if(arr[i]===arr[j]){
                    arr.splice(i,1);
                    len--;
                    j--;
                }
            }
        }
        return arr;
    }

     3、方法三:利用对象属性不能重复的特点去重

    Array.prototype.distinct = function(){
        var arr = this;
        var len = arr.length;
        var obj = {}
        var result = []
        for(var i =0 ;i<len;i++){
            //if(!obj[arr[i]]){ 
            if(!obj.hasOwnProperty(arr[i])){
                obj[arr[i]] = 1;
                result.push(arr[i])
            }
        }
        return result
    }

     4、方法四:利用数组进行排序

    Array.prototype.distinct = function(){
        var arr = this;
        var len = arr.length;
        arr.sort(function(a,b){
            return a-b;
        })
        function loop(index){
            if(index>=1){
                if(arr[index] === arr[index-1]){
                    arr.splice(index,1)
                }
                loop(index-1)
            }
        }
        loop(len-1)
        return arr;
    }

     5、方法五:遍历数组,利用indexOf判断

    Array.prototype.distinct = function(){
        var arr = this;
        var len = arr.length;
        var result = [];
        arr.forEach(function(currentVal,index,arr){  
        //arr.map(function(currentVal,index,arr){  
            var loop = result.indexOf(currentVal)
            if(loop === -1){
                result.push(currentVal)
            }
        })
        return result
    }

    6、方法六:es6的set数据结构,set成员都是唯一的,Array.form可以将set类型转化为数组

    Array.prototype.distinct = function(){
        return Array.from(new Set(this)) //或者使用es6的三点运算符转化为数组 [...new Set(this)]
    }
  • 相关阅读:
    docker 启动redis
    mysql主从库搭建
    云镜象下载地址整理
    linux 命令积累
    canal 踩坑实录---这可能是你看到的最全最简单的canal教程
    数据库查询超级慢,数据库死锁的查看与解决
    微信公众平台开发---建立服务器与微信公众平台的链接
    使用sql更改表的列的数据类型和添加新列和约束
    Mac安装、配置MongoDB
    shell 变量
  • 原文地址:https://www.cnblogs.com/lhyhappy365/p/9207945.html
Copyright © 2011-2022 走看看