var arr = [1,2,3,4,5,4,3,2,6,7,8,4,5,7,0]
1. for循环+indexOf
* 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中
* IE8以下不支持数组的indexOf方法
function uniq(array){
var temp = [];//一个新的临时的数组
for(var i = 0; i < array.length; i++){
if(temp.indexOf(array[i]) == -1){
temp.push(array[i]);
}
}
return temp;
}
2. reduce方法
var newArr = arr.reduce(function(prev,cur){
prev.indexOf(cur) === -1 && prev.push(cur)
return prev
},[])
* reduce的用法
arr.reduce(function(prev,cur,index,arr){
...
}, init);
3. ES6 set方法
let arr = [1,2,3,2,1]
arr = Array.from(new Set(arr)) // [1,2,3]
4.借用对象
va runiquelize = function(a){
if(a.constructor !==Array) {
throwTypeError("请传入数组类型");
}
var obj = {}, arr = [];
for(vari =0, j = a.length; i < j; i++) {
if(!obj[a[i]]) {
obj[a[i]] =1; arr.push(a[i]);
}
}
return arr;
};