js数组去重
2015-04-08 15:53
127 查看
第一种:也是最笨的吧。
第二种:这个正则天书一样。
第三种:使用对象的【hasOwnProperty】方法
第四种:先排序,前项比后项。这个方法挺简单的,但也实用
下面是以前经常用的,效率也很好。有点想hash表的感觉。
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; }
相关文章推荐
- 用js数组联动下拉框
- js-Javascript数组
- js数组删除数组元素!-收集
- JS - 动态创建2维数组Array (例子源码)
- js中从后台向前台调用数据(数组)后 如何遍历这个数组?
- JS数组方法汇总
- JS数组对象参考
- javascript(js)数组操作
- js删除数组里重复的元数
- [收藏]如何把客户端的 JS 数组传到服务器端
- js 中数组新的妙用
- 用Js数组来实现下拉列表连动无刷新
- 用js实现随机返回数组的一个元素
- js自带函数备忘 数组
- 2006第一个工作日--js删除数组某个元素[2006-02-05]
- js数组 sort方法的分析 转自NorthSnow HOME
- JS对象和数组大全
- js入门系列演示·数组
- JS数组方法汇总
- [导入]JS对象与数组参考大全