数组除去重复
2015-12-13 20:49
323 查看
今天看了 oneroom的 【javascript数字数组去重复项】觉得挺有意思的。顺便把我以前在看的对比一下。也算是做个备份。 第一种:也是最笨的吧。 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; }
相关文章推荐
- Javascript的变量和作用域问题(二)之作用域
- SGU 149. Computer Network( 树形dp )
- 《世界是数字的》读后感(3)
- Spring PropertyPlaceholderConfigurer
- io流操作之文件重命名代码
- 总结让图片在div中居中的方式
- 深拷贝和浅拷贝
- 归并排序
- canvas画时钟
- 小波包变换的入门 - - -MATLAB
- javaServlet了解
- Expectation Propagation: Theory and Application
- VC++ 6.0 中使用 MSComm.ocx
- java构建并引用用户自定义库
- 第十三周实践项目~Kruskal算法的验证
- RadioButton的drawableTop资源大小调整
- F - Stealing Harry Potter's Precious hdu 4771
- 初见WCF
- poj 1745
- 理解inode