第一种方法:创建空数组利用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()