JavaScript数组去重的多种方法(四种)
数组去重,一般需求是给你一个数组,调用去重方法,返回数值副本,副本中没有重复元素。一般来说,两个元素通过===比较返回true的视为相同元素,需要去重,所以,1和"1"是不同的元素,1和newNumber(1)是不同的元素,{}和{}是不同的元素(引用不同)。(当然如果需求认为{}和{}算作相同的元素,那么解法就不一样了)
method1
使用两重循环
functionunique(arr){ varres=[]; for(vari=0,len=arr.length;imethod2
functionunique(arr){ varret=[] for(vari=0;i这里判断可以使用一个语法糖
functionunique(arr){ varres=[]; for(vari=0,len=arr.length;i但是在低版本浏览器并没有indexOf
varindexOf=[].indexOf? function(arr,item){ returnarr.indexOf(item) }: functionindexOf(arr,item){ for(vari=0;imethod3
使用两重循环的另外一种比较方式,前面是将原数组的元素和结果数组一一比较,下面我们可以将原数组的重复元素的最后一个元素放入数组中
functionunique(arr){ varret=[]; varlen=arr.length; varisRepeat; for(vari=0;i这里还有一个优化的版本
functionunique(a){ varres=[]; for(vari=0,len=a.length;imethod4
用javascript中的object对象来当作哈希表
functiondedup(arr){ varhashTable={}; returnarr.filter(function(value,index,arr){ varkey=JSON.stringify(value); varmatch=Boolean(hashTable[key]); return(match?false:hashTable[key]=true); }); }因为Object的key值都是String类型,所以对于1和"1"无法分别,我们可以稍微改进下,将类型也存入key中
functiondedup(arr){ varret=[]; varhash={}; for(vari=0;i总结
以上所述是小编给大家介绍的JavaScript数组去重的多种方法(四种),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!