之前我也在帖子那边发布了一个相同名字的帖子,现在来个正式总结:三种方法,如有雷同,纯属巧合。
let arr = [1,2,3,4,4,1];
let newArr = arr.reduce((pre,cur)=>{
if(!pre.includes(cur))
return pre.concat(cur)
else
return pre
},[]);console.log(newArr);// [1, 2, 3, 4]
arr=[1,2,3,4,1,3,5,7,89,45,23,1]
function unique(arr){
for(var i=0,l=arr.length;i<l;i++)
for(var _=arr.findIndex((v,l)=>v===arr[i]&&l>i);_>-1;_=arr.findIndex((v,l)=>v===arr[i]&&l>=_))
arr.splice(_,1);
return arr
};console.log(unique(arr));// [1, 2, 3, 4, 5, 7, 89, 45, 23]
//稍作修改,无需判断_<arr.length
arr=[1,2,3,4,1,3,5,7,89,45,23,1]
Array.prototype.unique=function(){
var r = [], obj = {};
for (var i=0,l=this.length; i<l; i++) {
var item=this[i];
if (!obj[item]) {
r.push(item);obj[item] = 1;
}
}
return r;
};console.log(arr.unique());// [1, 2, 3, 4, 5, 7, 89, 45, 23]