1、自己写的
//去重 自己写的方法
var arr=[1,'a','k',2,'e','a','e',1,2,3];
Array.prototype.unique=function(){
//设置全1的标志数组
var arr1=new Array(this.length);
for(var i=0;i<arr1.length;i++){
arr1[i]=1;
}
var newArr=[];
for(var i=0;i<arr.length-1;i++){
if(arr1[i]==0)
continue;
for(var j=i+1;j<arr.length;j++){
if(arr[i]==arr[j]){
arr1[j]=0;
}
}
}
for(var i=0;i<arr1.length;i++){
if(arr1[i]==1){
newArr.push(arr[i]);
}
}
return newArr;
}
var newArr=arr.unique();
console.log(newArr);
2、差不多的笨方法
//去重
var arr=[1,'a',7,2,'e',4,11,'a','e',1,2,3];
Array.prototype.unique=function(){
var len=this.length,newArr=[],flag=1;
for(var i=0;i<len;i++,flag=1){
for(var j=0;j<i;j++){
if(this[i]==this[j]){
flag=0;
}
}
flag?newArr.push(this[i]):'';
}
return newArr;
}
var newArr=arr.unique();
console.log(newArr);
3、利用indexOf
//去重
var arr=[1,8,'a',7,2,'e',4,'a','e',1,2,3];
//arr1.indexOf(arr[i]) 获得指定数组下指定的元素值的下标索引号
Array.prototype.unique=function(){
var arr1=[];
for(var i=0;i<this.length;i++){
if(arr1.indexOf(this[i])==-1){
arr1.push(this[i]);
}
}
return arr1;
}
var newArr=arr.unique();
console.log(newArr);
4、利用键值唯一性
//去重
var arr=[1,8,'a',7,2,'e','f',4,'a','e',1,2,3,77];
Array.prototype.unique=function(){
var arr1=[];
for(var i=0;i<this.length;i++){
arr1[this[i]]=1;
}
var newArr=[];
//利用键值的唯一性
for(var k in arr1){
if(arr1.hasOwnProperty(k))
newArr[newArr.length]=k;
}
return newArr;
}
var newArr=arr.unique();
console.log(newArr);
5、利用ES6新特性set
var arr=[1,8,'a',7,2,'e','f',4,'a','e',1,2,3,77];
Array.prototype.unique=function(){
var set=new Set(this);
var newArr=[];
for(let v of set){
newArr[newArr.length]=v;
}
return newArr;
}
var newArr=arr.unique();
console.log(newArr);