博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js数组去重
阅读量:4657 次
发布时间:2019-06-09

本文共 1464 字,大约阅读时间需要 4 分钟。

第一种:也是最笨的吧。

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;}

 

转载于:https://www.cnblogs.com/yesw/p/4402642.html

你可能感兴趣的文章
寻找最大的数
查看>>
【转】java中float与byte[]的互转 -- 不错
查看>>
sockaddr和sockaddr_in的区别
查看>>
基础练习1
查看>>
左旋转字符串
查看>>
第二次C语言实验报告
查看>>
XPath轴
查看>>
Struts2的优点与Struts1的区别:
查看>>
5-29 删除字符串中的子串
查看>>
webdriver模拟鼠标操作
查看>>
Spring cloud 基础
查看>>
游戏开发Unity渲染场景光照性能优化 ShaderLOD
查看>>
java中构造方法的使用
查看>>
使用Expression动态创建lambda表达式
查看>>
MapReduce
查看>>
找工作——JVM内存管理
查看>>
【Flask】在Flask中使用logger
查看>>
好系统重装助手教你如何让win10系统快速开机
查看>>
linux开机启动
查看>>
BZOJ 1101 [POI2007]Zap 【莫比乌斯反演】
查看>>