原生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<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]

浙公网安备 33010602011771号