数组去重

1、双层循环

Array.prototype.dist = function(){
     var arr = this;
     var len = arr.length;  
     var result = [];    
     for(var i = 0;i<len;i++){
          for(var j = i+1 ; j< len;j++){
            if(arr[i] === arr[j]){
                j = ++i;
           }
      result.push(arr[i]);
     }
  }
  return result;
}

 2、利用splice直接操作原数组

Array.prototype.dist = function(){
  var arr = this;
  var len = arr.length;
  for(var i=0;i<len;i++){
    for(var j=i+1; j<len;j++){
      if(arr[j] === arr[i]){
        arr.splice(j,1);
        j--;
        len--;
      }
    }
  }
  return arr; }

 3、数组递归去重,先进行排序,后比较

Array.prototype.dist = function(){
  var arr = this;
  var len = arr.length;
  arr.sort(function(a,b){
    return a - b;
  });
  function arrloop(index){
    if(index > 1) {
      if(arr[index] === arr[index-1]){
        arr.splice(index,1);
      }
    }
    arrloop(index-1);

  }
  arrloop(len-1);
  return arr;
}

 4、利用indexOf和forEach实现

Array.prototype.dist = function(){
  var arr = this;
  var result = [];
  arr.forEach(function(element,index,arr){
    if(arr.indexOf(element,index+1) === -1){//从数组的下一个开始寻找
      result.push(element);
    }
  });
  return arr; }

 5、利用es6中的set,类似于数组,其成员都是唯一的

Array.prototype.dist = function(){
  var arr = this;   return Array.from(new set(arr));//Array.from也是es6中的用法 }

 

转载于:https://www.cnblogs.com/wuting/p/8796065.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值