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

    第一种:也是最笨的吧。

    Array.prototype.unique1 = function () {
        var r = new Array();
        label:for(var i = 0, n = this.length; i < n; i++) {
            for(var x = 0, y = r.length; x < y; x++) {
                if(r[x] == this[i]) {
                    continue label;
                }
            }
            r[r.length] = this[i];
        }
        return r;
    }

    第二种:这个正则天书一样。

    Array.prototype.unique2 = function () {
        return this.sort().join(",,").replace(/(,|^)([^,]+)(,,2)+(,|$)/g,"$1$2$4").replace(/,,+/g,",").replace(/,$/,"").split(",");
    }

    第三种:使用对象的【hasOwnProperty】方法

    Array.prototype.unique3 = function() {
        var temp = {}, len = this.length;
        for(var i=0; i < len; i++)  {
            var tmp = this[i];
            if(!temp.hasOwnProperty(tmp)) {
                temp[this[i]] = "my god";
            }
        }
      
        len = 0;
        var tempArr=[];
        for(var i in temp) {
            tempArr[len++] = i;
        }
        return tempArr;
    }

    第四种:先排序,前项比后项。这个方法挺简单的,但也实用

    Array.prototype.unique4 = function () {
        var temp = new Array();
          this.sort();
          for(i = 0; i < this.length; i++) {
              if( this[i] == this[i+1]) {
                continue;
            }
              temp[temp.length]=this[i];
          }
          return temp;
      
    }

    下面是以前经常用的,效率也很好。有点想hash表的感觉。

    Array.prototype.unique5 = function() {
        var res = [], hash = {};
        for(var i=0, elem; (elem = this[i]) != null; i++)  {
            if (!hash[elem])
            {
                res.push(elem);
                hash[elem] = true;
            }
        }
        return res;
    }
  • 相关阅读:
    【转载】深入浅出VA函数
    oracle数据库怎么创建数据库实例
    2.4 OpenEuler中C语言中的函数调用测试(选做)
    OpenEuler 中C与汇编的混合编程(选做)
    程序运行
    改进ls的实现(课下作业)
    学习笔记12
    实验四 Web服务器1socket编程
    实验四 Web服务器2
    学习6
  • 原文地址:https://www.cnblogs.com/yesw/p/4402642.html
Copyright © 2011-2022 走看看