1,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; }
2,js 数组去重复项的第二种方法,使用正则表达式。
Array.prototype.unique2 = function () { return this.sort().join(",,").replace(/(,|^)([^,]+)(,,2)+(,|$)/g,"$1$2$4").replace(/,,+/g,",").replace(/,$/,"").split(","); }
3,js 数组去重复项的第三种方法:
使用对象的【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; }
4,js 数组去重复项的第四种方法:先排序,前项比后项。简单实用型。
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; }
5,js 数组去重复项的第五种方法,有点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 数组去重复项的五种方法,对大家有所帮助。