首页 > IT知识 > js数组去重的三种常用方法

js数组去重的三种常用方法

2017年10月19日13:51:31来源:海文国际         540
分享到:
IT知识文章: 

js数组去重的三种常用方法

本篇文章主要是对js数组去重的三种常用方法进行了总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助!

第一种是比较常规的方法

思路:

1.构建一个新的数组存放结果

2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比

3.若结果数组中没有该元素,则存到结果数组中。

Array.prototype.unique1=function(){

varres=[this[0]];

for(vari=1;i<this.length;i++){

varrepeat=false;

for(varj=0;j<res.length;j++){

if(this[i]==res[j]){

repeat=true;

break;

}

}

if(!repeat){

res.push(this[i]);

}

}

returnres;

}

vararr=[1,'a','a','b','d','e','e',1,0]

alert(arr.unique1());

第二种方法比上面的方法效率要高

思路:

1.先将原数组进行排序

2.检查原数组中的第i个元素与结果数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置

3.如果不相同,则将该元素存入结果数组中

Array.prototype.unique2=function(){

this.sort();//先排序

varres=[this[0]];

for(vari=1;i<this.length;i++){

if(this[i]!==res[res.length-1]){

res.push(this[i]);

}

}

returnres;

}

vararr=[1,'a','a','b','d','e','e',1,0]

alert(arr.unique2());

第二种方法也会有一定的局限性,因为在去重前进行了排序,所以最后返回的去重结果也是排序后的。如果要求不改变数组的顺序去重,那这种方法便不可取了。

第三种方法(推荐使用)

思路:

1.创建一个新的数组存放结果

2.创建一个空对象

3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。

说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。

Array.prototype.unique3=function(){

varres=[];

varjson={};

for(vari=0;i<this.length;i++){

if(!json[this[i]]){

res.push(this[i]);

json[this[i]]=1;

}

}

returnres;

}

vararr=[112,112,34,'你好',112,112,34,'你好','str','str1'];

alert(arr.unique3());

本文由web前端培训小编网络搜集,仅供个人研究、交流学习使用,不涉及商业盈利目的。如有版权问题,请联系本站管理员予以更改或删除。