zoukankan      html  css  js  c++  java
  • JS实现数组去重方法总结(三种常用方法)

    方法一:

    双层循环,外层循环元素,内层循环时比较值

    如果有相同的值则跳过,不相同则push进数组

    Array.prototype.distinct = function(){

     var arr = this,result = [], i,j,len = arr.length;

     for(i = 0; i < len; i++){

     for(j = i + 1; j < len; j++){

       if(arr[i] === arr[j]){

        j = ++i;

       }

     }

     result.push(arr[i]);

     }

     return result;

    }

    var arra = [1,2,3,4,4,1,1,2,1,1,1];

    arra.distinct();    //返回[3,4,2,1]

    方法二:利用splice直接在原数组进行操作

    双层循环,外层循环元素,内层循环时比较值

    值相同时,则删去这个值

    注意点:删除元素之后,需要将数组的长度也减1.

    Array.prototype.distinct = function (){

     var arr = this,i,j,len = arr.length;

     for(i = 0; i < len; i++){

     for(j = i + 1; j < len; j++){

       if(arr[i] == arr[j]){

        arr.splice(j,1);

        len--;

        j--;

       }

     }

     }

     return arr;

    };

    var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,];

    var b = a.distinct();

    console.log(b.toString()); //1,2,3,4,5,6,56

    优点:简单易懂

    缺点:占用内存高,速度慢

     方法三:利用对象的属性不能相同的特点进行去重

    Array.prototype.distinct = function (){

     var arr = this,i,obj = {},result = [],len = arr.length;

     for(i = 0; i< arr.length; i++){

     if(!obj[arr[i]]){ //如果能查找到,证明数组元素重复了

       obj[arr[i]] = 1;

       result.push(arr[i]);

     }

     }

     return result;

    };

    var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,];

    var b = a.distinct();

    console.log(b.toString()); //1,2,3,4,5,6,56

  • 相关阅读:
    Python day 34 并发编程、PID/PPID、实现多进程得两种方式
    Python Day33:粘包问题及粘包解决方案
    数据分析
    数据分析
    爬虫 之 mongodb数据库
    爬虫
    爬虫
    爬虫
    flask框架
    flask框架
  • 原文地址:https://www.cnblogs.com/NatChen/p/9818705.html
Copyright © 2011-2022 走看看