数组去重的方法

时间:2022-12-12 16:39:55
1、逐一比对,若相同就不存入,若没有相同的则存入数组:
<p>原数组:<span id="array1"></span></p>
<p>去重数组:<span id="array2"></span></p>
<script type="text/javascript">
//函数
function delCop(aData){
var deptArray=new Array();
deptArray.push(aData[
0]);
for(var i=0; i<aData.length; i++){
var repeat=false;
for(var j=0; j<deptArray.length; j++){
if(aData[i]==deptArray[j]){
repeat
=true;
break;
}
}
if(!repeat){
deptArray.push(aData[i]);
}
}
return deptArray
}
//使用
var aData=[2,3,5,63,3432,23,4,4,5,'我爱*','我爱*'];
document.getElementById(
'array1').innerHTML=aData;
document.getElementById(
'array2').innerHTML=delCop(aData);
</script>

2、利用sort排序后去重(推荐):
<p>原数组:<span id="array1"></span></p>
<p>去重数组:<span id="array2"></span></p>
<script type="text/javascript">
//函数
function delCop(aData){
var deptArray=new Array();
aData.sort();
deptArray.push(aData[
0]);
for(var i=0; i<aData.length; i++){
if(aData[i]!=deptArray[deptArray.length-1]){
deptArray.push(aData[i]);
}
}
return deptArray;
}
//使用
var aData=[2,3,5,63,3432,23,4,4,5,'我爱*','我爱*'];
document.getElementById(
'array1').innerHTML=aData;
document.getElementById(
'array2').innerHTML=delCop(aData);
</script>

3.利用hash表的方法去重数组:(把原数组暂存新数组后,并为属性赋值1):
<p>原数组:<span id="array1"></span></p>
<p>去重数组:<span id="array2"></span></p>
<script type="text/javascript">
//函数
function delCop(aData){
var deptArray=new Array();
var otemp={};
for(var i=0;i<aData.length; i++){
if(!(otemp[aData[i]])){
deptArray.push(aData[i]);
}
otemp[aData[i]]
=1;
}
return deptArray;
}
//使用唯一缺点,区分不了带引号和不带引号的数字。
var aData=[2,3,5,63,3432,23,6,'6',5,'我爱*'];
document.getElementById(
'array1').innerHTML=aData;
document.getElementById(
'array2').innerHTML=delCop(aData);
</script>