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

    1、遍历数组,双重循环,如果新数组中不存在则push到新数组

     1     Array.prototype.distinct = function(){
     2         // 原数组
     3         var arr = this;
     4         // 新数组
     5         var result = [];
     6           var len = arr.length;
     7           var i = 0;
     8           var j = 0;
     9           for(i = 0; i < len; i++){
    10               for(j = i + 1; j < len; j++){
    11                   if(arr[i] === arr[j]){
    12                       j = ++i;
    13                   }
    14               }
    15               result.push(arr[i]);
    16           }
    17           return result;
    18       }

    2、对原数组直接通过splice操作,删除重复值,注意在删除重复值的时候,相应的修改数组的长度

    Array.prototype.distinct = function (){
     var arr = this;
      var i = 0;
      var j = 0;
      var 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;
    };
    
    

    3、利用es6的set方法

    1 var arr = [1,2,3,3,4];
    2 var set = new Set(arr);
    3 var newArr = Array.from(set);

    4、filter+indexof(代码简洁,效率较好)

    1 let arr = [1, 'a', 'a', 'b', 'd', 1, 0, 2, 2];
    2 function unique(arr){
    3     return arr.filter((item, index, array) =>  array.indexOf(item) === index);
    4 }

    最近正好碰到了数组去重,老生常谈咯,但是当自己上手写的时候还是会有这那的问题哟。

    Fighting! Fighting! 

  • 相关阅读:
    构建之法第十三~十七章阅读
    构建之法第十,十一,十二章阅读
    构建之法第八,九,十章阅读
    Sprint会议计划
    作业6
    作业5 四则运算 测试与封装 5.2
    作业5 四则运算 测试与封装 5.1
    构建之法2
    做汉堡
    构建之法阅读
  • 原文地址:https://www.cnblogs.com/Vibge/p/9338001.html
Copyright © 2011-2022 走看看