JS数组去重的10种方法
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",{},{}]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧