zoukankan      html  css  js  c++  java
  • 数组去重的方法

    一、返回 去重后数组
    1、请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。
    Array.protoType.delRepet=delRepet();
    function delRepet(){
    var array = [2,3,4,6,2,4,8,4,9];
    var obj={};
    var arr=[];
    for(var i=0,len=array.length;i<len;i++){
       obj[array[i]] = array[i];
    }
    for(var o in obj){
        arr.push(o);
    }
    return arr;
    }
     
    var result = delRepet();
    console.log(result)
     
    测试结果
    2、用hash表来去除重复项,原理同上
     1 Array.prototype.unique = function()
     2 {
     3     var n = {},r=[]; //n为hash表,r为临时数组
     4     for(var i = 0; i < this.length; i++) //遍历当前数组
     5     {
     6         if (!n[this[i]]) //如果hash表中没有当前项
     7         {
     8             n[this[i]] = true; //存入hash表
     9             r.push(this[i]); //把当前数组的当前项push到临时数组里面
    10         }
    11     }
    12     return r;//返回过滤了重复数据组成数组
    
    
    13 }
     
     二、返回重复数据组成的数组
     1 Array.prototype.unique2 = function()
     2 {
     3     var n = {},r=[],r1=[]; //n为hash表,r为临时数组存放不重复数据,r1存放重复数据
     4     for(var i = 0; i < this.length; i++) //遍历当前数组
     5     {
     6         if (!n[this[i]]) //如果hash表中没有当前项
     7         {
     8             n[this[i]] = true; //存入hash表
     9             r.push(this[i]); //把当前数组的当前项push到临时数组里面
    10         }else{
    11                                                 r1.push(this[i]);
    12 
    13 }
    14     }
    15     return r1;//返回重复数据组成数组
    16 }

    三、返回重复数组与不重复数组

    将数组转化成字符串,使用字符串的匹配方法查找重复数据

     1 var arr=[2,3,1,5,4,2,1];
     2 var arr1=[],arr2=[];
     3 var str = arr.join(",");
     4 for(var i=0,len=arr.length;i<len;i++){
     5   var isExist = str.search(arr[i]);//这里的search()方法可以换成indexOf()
     6   if(isExist){
     7     arr1.push(arr[i]);
     8   }else{
     9     arr2.push(arr[i]);
    10   }
    11 }
    12 console.log(arr1,arr2)

     hash去重

    $.each(shopGroup,function(index,obj){
              shopList.push(obj.id);
              if(!flagObj[obj.cityCode]){//去重
                flagObj[obj.cityCode] = true;
                cityList.push(obj.cityCode);
              }
            });
    四、字符串去重法---最新方法:
    1 var arr=[a,b,c,d];
    2   arr1 = [];
    3 for(var i = 0; i < arr.length;i++){
    4   if(arr1.join(',').index("arr[i])" == -1){
    5     arr1.push(arr[i]);
    6   }
    7 }
     
  • 相关阅读:
    Android大牛
    在学习oauth时学到的
    using-jade-and-grunt-to-speed-up-html-production
    build-your-microservices-api-with-swagger
    json-web-token-apache-shiro
    WebSocket对象特性和方法
    芝麻教程
    how to export multiple SVG graphics in illustrator
    直播后台
    关于在chrome中响应不出现在XHR里的远影
  • 原文地址:https://www.cnblogs.com/weilantiankong/p/4712267.html
Copyright © 2011-2022 走看看