js数组去重的4个方法

  1. Array.prototype.unique1 = function()
    {
    	var n = []; //一个新的临时数组
    	for(var i = 0; i < this.length; i++) //遍历当前数组
    	{
    		//如果当前数组的第i已经保存进了临时数组,那么跳过,
    		//否则把当前项push到临时数组里面
    		if (n.indexOf(this[i]) == -1) n.push(this[i]);
    	}
    	return n;
    }
  2. Array.prototype.unique2 = function()
    {
    	var n = {},r=[]; //n为hash表,r为临时数组
    	for(var i = 0; i < this.length; i++) //遍历当前数组
    	{
    		if (!n[this[i]]) //如果hash表中没有当前项
    		{
    			n[this[i]] = true; //存入hash表
    			r.push(this[i]); //把当前数组的当前项push到临时数组里面
    		}
    	}
    	return r;
    }
  3. Array.prototype.unique3 = function()
    {
    	var n = [this[0]]; //结果数组
    	for(var i = 1; i < this.length; i++) //从第二项开始遍历
    	{
    		//如果当前数组的第i项在当前数组中第一次出现的位置不是i,
    		//那么表示第i项是重复的,忽略掉。否则存入结果数组
    		if (this.indexOf(this[i]) == i) n.push(this[i]);
    	}
    	return n;
    }
  4. Array.prototype.unique4 = function()
    {
    	this.sort();
    	var re=[this[0]];
    	for(var i = 1; i < this.length; i++)
    	{
    		if( this[i] !== re[re.length-1])
    		{
    			re.push(this[i]);
    		}
    	}
    	return re;
    }
  5. function unique(arr) {
       var ret = []
       var hash = {}
     
       for ( var i = 0; i < arr.length; i++) {
         var item = arr[i]
         var key = typeof (item) + item
         if (hash[key] !== 1) {
           ret.push(item)
           hash[key] = 1
         }
       }
     
       return ret
    }

猜你喜欢

转载自fangtoby.iteye.com/blog/2292645
今日推荐