JavaScript数组去重的多种方法(四种)
数组去重,一般需求是给你一个数组,调用去重方法,返回数值副本,副本中没有重复元素。一般来说,两个元素通过===比较返回true的视为相同元素,需要去重,所以,1和"1"是不同的元素,1和newNumber(1)是不同的元素,{}和{}是不同的元素(引用不同)。(当然如果需求认为{}和{}算作相同的元素,那么解法就不一样了)
method1
使用两重循环
functionunique(arr){
varres=[];
for(vari=0,len=arr.length;i
method2
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;i
method3
使用两重循环的另外一种比较方式,前面是将原数组的元素和结果数组一一比较,下面我们可以将原数组的重复元素的最后一个元素放入数组中
functionunique(arr){
varret=[];
varlen=arr.length;
varisRepeat;
for(vari=0;i
这里还有一个优化的版本
functionunique(a){
varres=[];
for(vari=0,len=a.length;i
method4
用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数组去重的多种方法(四种),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!