0、es6方法
let unique = new Set(arr);
console.log(Array.from(unique));
1、遍历数组法:
此方法缺点: IE8以下不支持 indexOF
function unique(array){
var n = [];
for(var i =0; i<array.length; i++){
if(n.indexOf(array[i])==-1){
n.push(array[i]);
}
}
return ;
}
2、对象键值对法;
此方法优点:速度最快, 缺点:占空间最多
function unique(array){
var n = {};
var r = [];
var len = array.length;
var val;
var type;
for(var i=0; i<array.length; i++){
val = array[i];
type = typeof val ;
if(!n[val]){
n[val] = [type];
r.push(val);
} else if(n[val].indexOf(type)<0){
n[val].push(type);
r.push(val);
}
}
return r;
}
3、数组下标法:
function unique(array){
var n = [array[0]];
for(var i=1; i<array.length; i++){
if(array.indexOf(array[i])==i){
n.push(array[i]);
}
}
return n;
}
4、优化遍历数组法
function unique(array){
var r = [];
for(var i=0; i<array.length; i++){
for(var j=i+1; j<array.length; j++){
if(array[i]===array[j]){
j=++i;
}
}
r.push(array[i])
}
return r;
}
5、
function unique(array){
var arr = [];
var obj = {};
for(var i=0; i<arary.length; i++){
if(!obj[array[i]]){
obj[array[i]] = array[i];
arr.push(array[i])
}
}
return arr
}