浙林龙哥

   :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

数组中去除重复元素的算法:

第一种:常用方式。

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;
 
}
posted on 2011-03-08 11:32  浙林龙哥  阅读(641)  评论(0编辑  收藏  举报