javascript删除数组重复元素的方法汇总
本文实例讲述了javascript删除数组重复元素的方法。分享给大家供大家参考。具体分析如下:
这里分享一个前端面试高频题,主要实现javascript删除数组重复元素。希望对初学者有所帮助
//数组去重的方法
Array.prototype.unique=function(){
//集中声明变量
var
oldArr=this,
newArr=[oldArr[0]],
len=oldArr.length,
i=1;
//过滤空数组
if(!len)returnthis;
//过滤重复元素
for(;i<len;i++){
newArr.indexOf(oldArr[i])<0?newArr.push(_this):'';
}
//返回过滤后的数组没有影响原数组
returnnewArr;
}
vararr=['a','a','b','a','c','d'];
console.log(arr.unique());
//["a","b","c","d",unique:function]
虽然网上也有很多而且自己写的也不咋地,但是毕竟自己写的逻辑清楚以后还可以顺着逻辑扩展比如扩展到对象元素去重或者是可以同时操作多个数组等等这里再放上别人的写的几个方法可以综合比较下
方法1:
functionoSort(arr)
{
varresult={};
varnewArr=[];
for(vari=0;i
{
if(!result[arr[i]])
{
newArr.push(arr[i])
result[arr[i]]=1
}
}
returnnewArr
}
方法2:
遍历要删除的数组arr,把元素分别放入另一个数组tmp中,在判断该元素在arr中不存在才允许放入tmp中
用到两个函数:for...in和indexOf()
varstudent=['qiang','ming','tao','li','liang','you','qiang','tao'];
functionunique(arr){
//遍历arr,把元素分别放入tmp数组(不存在才放)
vartmp=newArray();
for(variinarr){
//该元素在tmp内部不存在才允许追加
if(tmp.indexOf(arr[i])==-1){
}
}
returntmp;
}
方法3:
把目标数组arr的元素值和键的位置调换自动就把重复的元素给删除掉了,调换后的样子:array('qiang'=>1,'ming'=>1,'tao'=>1)
<scripttype="text/javascript">
varstudent=['qiang','ming','tao','li','liang','you','qiang','tao'];
functionunique(arr){
vartmp=newArray();
for(varminarr){
tmp[arr[m]]=1;
}
//再把键和值的位置再次调换
vartmparr=newArray();
for(varnintmp){
tmparr.push(n);
}
returntmparr;
}
</script>
方法4
/**
*去除数组重复元素
*/
functionuniqueArray(data){
data=data||[];
vara={};
for(vari=0;i<data.length;i++){
varv=data[i];
if(typeof(a[v])=='undefined'){
a[v]=1;
}
};
data.length=0;
for(variina){
data[data.length]=i;
}
returndata;
}
方法都差不多第三个方法想法还是蛮高明的~
希望本文所述对大家的javascript程序设计有所帮助。