// 对数组进行去重操作,只考虑数组中元素为数字或字符串,返回一个去重后的数组
//第一种方法,遍历,将没有的插入临时数组
function uniqArray1(arr) {
var n=[];
for(var i=0;i<arr.length;i++){
//如果当前项已经保存到了临时数组,则跳过,否则加入
if(n.indexOf(arr[i])==-1){
n.push(arr[i]);
}
}
return n;
}
//第二种方法,使用哈希表
function uniqArray2(arr){
var n={},//哈希表
r=[];//零时数组
for(var i=0;i<arr.length;i++){
if(n[arr[i]]==null){//如果哈希表中没有,则添加到哈希表,且进入临时数组
n[arr[i]]=true;
r.push(arr[i]);
}
}
return r;
}
//第三种方法,先排序,再比较邻接部分
function uniqArray3(arr){
arr.sort();
var r=[arr[0]];
for(var i=1;i<arr.length;i++){
if(arr[i]!=r[r.length-1]){//由于已经经过了排序,所以相邻的是相同的
r.push(arr[i]);
}
}
return r;
}
//验证数组去重函数的使用
var arr=[2,3,4,2,4,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3];
for(var i=0;i<10000000;i++){//为了分辨出花费时间的区别,特此增加数组的长度
arr.push(3);
}
var time1=Date.now();
var n1=uniqArray1(arr);
var time2=Date.now();
console.log(n1);//2,3,4,5说明第一种去重成功
console.log(time2-time1);//218
time1=Date.now();
var n2=uniqArray2(arr);
time2=Date.now();
console.log(n2);//2,3,4,5说明第二种去重成功
console.log(time2-time1);//63,说明对象下标的引用要比indexOf搜索快得多
time1=Date.now();
var n3=uniqArray3(arr);
time2=Date.now();
console.log(n3);//2,3,4,5说明第三种去重成功
console.log(time2-time1);//203,说明sort方法使用快排,比indexOf快,但是没有哈希快
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有