数组中去除重复元素的算法:
第一种:常用方式。
Array.prototype.unique = 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.unique = function () { return this.sort().join(",,").replace(/(,|^)([^,]+)(,,\2)+(,|$)/g,"$1$2$4").replace(/,,+/g,",").replace(/,$/,"").split(","); }
第三种:利用javascript语言特性。
Array.prototype.unique = function() { var temp = {}, len = this.length; for(var i=0; i < len; i++) { var tmp = this[i]; if(!temp.hasOwnProperty(tmp)) { temp[this[i]] = "hoho"; } } this.length = 0; len = 0; for(var i in temp) { this[len++] = i; } return this; }
第四种:循环一遍方式。
Array.prototype.unique = 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; }