一、利用indexOf
普通函数方式:
function unique(arr){
var newArr=[];
for(var i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i])===-1){
newArr.push(arr[i]);
}
}
return newArr
}
var array=[1,1,2,3,4,4,5,5,6];
unique(array);// [1, 2, 3, 4, 5, 6]
原型方法:
Array.prototype.unique=function(){
var newArr=[this[0]];
for(var i=0;i<this.length;i++){
if(this.indexOf(this[i])===i){
newArr.push(this[i]);
}
}
return newArr
};
var array=[1,1,2,3,4,4,5,5,6];
array.unique();
二、利用Array.filter
var oldArr=[1,1,2,3,4,4,5,5,6];
var newArr=oldArr.filter(function(currentValue,index,arr){
if(arr.indexOf(currentValue)===index){
return true
}else{
return false
}
});
console.log(newArr);
三、ES6中方法
1、使用Set函数与扩展运算符(利用的是Set函数数值唯一性的特点)
[...new Set([1,1,2,3,4,5])]
2、Array.from()【利用的是Set函数数值唯一性的特点及from()函数可以将其转换为数组的原理】
Array.from(new Set([1,1,2,2,3,4,5,5]));