var arr=[1,1,'true','true',true,true,15,15,false,false,undefined,undefined,null,null,NaN,NaN,'NaN',0,0,'a','a',{},{}]
- 利用 Set(ES6中最常用)
function useSet(arr){
return Array.from(new Set(arr))
}
- 利用 for 嵌套 for,然后 splice(ES5中最常用)
function useSplice(arr){
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]==arr[j]){
arr.splice(j,1);
j--;
}
}
}
}
- 利用 indexOf
function useIndexof(arr){var array=[];
for(var i=0;i<arr.length;i++){
if(array.indexOf(arr[i])===-1){
array.push(arr[i])
}
}
return array;
}
- 利用 sort
function useSort(arr){
arr=arr.sort()
var array=[arr[0]]
for(var i=1;i<arr.length;i++){
if(arr[i]!==arr[i-1]){
arr.push(arr[i]);
}
}
return array;
}
- 利用 includes
function useIncludes(arr){
var array=[];
for(var i=0;i<arr.length;i++){
if(!array.includes(arr[i])){
array.push(arr[i]);
}
}
return array;
}
- 利用 hasOwnProperty
function useHasOwnProperty(arr){
var obj={};
return arr.filter(function(item,index,arr){
return obj.hasOwnProperty(typeof item+item)?false:(obj[typeof item+item]=true)
})
}
- 利用 filter
function useFilter(arr){
return arr.filter(function(item,index,arr){
return arr.indexOf(item,0)===index;
});
}
- 利用递归
function useDigui(arr){
var array=aa;
var len=array.length;
array.sort(function(a,b){
return a-b;
})
function loop(index){
if(index>=1){
if(array[index]===array[index-1]){
array.splice(index,1);
}
loop(index-1);
}
}
loop(len-1);
return array;
}
- 利用 Map 数据结构
function useMap(arr){
let map=new Map();
let array=new Array();
for(let i=0;i<arr.length;i++){
if(map.has(arr[i])){
map.set(arr[i],true);
}else{
map.set(arr[i],false);
array.push(arr[i]);
}
}
return array;
}
- 利用 reduce+includes
function useReduce(arr){
return arr.reduce((prev,cur)=>prev.includes(cur)?prev:[...prev,cur],[]);
}
最终输出:[1,"true",true,15,false,undefined,null,NaN,"NaN",0,"a",{},{}]