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",{},{}]