原生js数组去重

第一种方法:创建空数组利用indexOf方法检测就数组的项是否在新数组中。

Array.prototype.unique=function(){
  var arr=[];//创建新数组
  for(var i=0;i<this.length;i++){ //遍历当前数组
  if(arr.indexOf(this[i])===-1){//如果等于-1,那么也是就是新数组中没有一项和当前数组一样
    arr.push(this[i])
 }
}
 return arr;
}
//调用:ary.unique()

第二种方法:创建空数组和空对象,判断数组是否在对象中。

Array.prototype.unique=function(){
  var tmp={},arr=[]
  for(var i=0;i&lt;this.length;i++){
    if(!tmp[this[i]]){//如果tmp中没有this[i]
      tmp[this[i]]=true;//存入
      arr.push(this[i]);//添加到新数组中
    }
  }
  return arr
}
//调用:ary.unique()

第三种方法:下标判断法。

Array.prototype.unique=function(){
  var arr=[this[0]];
  for(var i=1;i<this.length;i++){ //遍历当前数组,从第二项开始遍历
    if(this.indexOf(this[i])===i){//如果当前数组的第i项是i那么就存入新的数组
      arr.push(this[i])
    }
  }
  return arr;
}
//调用:ary.unique()

第四种方法:排序后在去重。

Array.prototype.unique=function(){
  var arr=[];
  this.sort();
  for(var i=0;i<this.length;i++){
    if(this[i]!==arr[arr.length-1]){
      arr.push(this[i])
    }
  }
  return arr;
}
//调用:ary.unique()

第五种方法:黑科技new Set数组去重。

[...new Set([1,1,2,2,3,3])];//[1,2,3]
let arr = [1,2,3,2,1]
arr = Array.from(new Set(arr)) // [1,2,3]

 

posted @ 2019-03-29 00:52  伪代码  阅读(783)  评论(0)    收藏  举报