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

  • 相关阅读:
    ACM ICPC 2008–2009 NEERC MSC A, B, C, G, L
    POJ 1088 滑雪 DP
    UVA 11584 最短回文串划分 DP
    POJ 2531 Network Saboteur DFS+剪枝
    UVa 10739 String to Palindrome 字符串dp
    UVa 11151 Longest Palindrome 字符串dp
    UVa 10154 Weights and Measures dp 降维
    UVa 10271 Chopsticks dp
    UVa 10617 Again Palindrome 字符串dp
    UVa 10651 Pebble Solitaire 状态压缩 dp
  • 原文地址:https://www.cnblogs.com/NatChen/p/9818705.html
Copyright © 2011-2022 走看看