数组去重

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中的用法 }

 

posted @ 2018-04-11 15:37  不落幕  阅读(138)  评论(0编辑  收藏  举报