• 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)]
    }
  • 相关阅读:
    判断字符串是否包含某一个值方法
    生成一个随机手机号
    python 常用数据类型及操作方法
    selenium 常用的定位方法
    mysql 多表查询
    转载--python全栈开发学习
    Jenkins执行jmeter自动化脚本方法
    阅读方法
    pytorch学习
    英文阅读材料记录
  • 原文地址:https://www.cnblogs.com/lhyhappy365/p/9207945.html
Copyright © 2020-2023  润新知