JavaScript数组去重的几种方法效率测试


Posted in Javascript onOctober 23, 2016

以下是我针对网上三种高效率方法总结与效率测试,如果大家有更好的意见或建议也可以提出,大家共勉学习。

数组去重法1:

Array.prototype.unique1 = function(){
 console.time("数组去重法1"); //记录开始执行的时间
 var arr = []; 
 //创建一个临时数组
 var obj = {}; 
//创建一个空对象
 for(var i = 0; i < this.length; i++){ 
//遍历当前要去重的数组
  if(!obj[this[i]]){   //判断obj对象中是否存有当前项,没有则执行
   arr.push(this[i]); 
//将当前项push到临时数组中
   obj[this[i]] = 1; 
//将当前项存入obj对象
  }
 }
 console.timeEnd("数组去重法1");
 //记录结束执行的时间
 return arr;
}

数组去重法2:

Array.prototype.unique2 = function(){
 console.time("数组去重法2"); //记录开始执行的时间
 var arr = [];  //创建一个临时数组
 for(var i = 0; i < this.length; i++){  //遍历当前要去重的数组
  if(arr.indexOf(this[i]) == -1){  //判断临时数组中是否存有当前项,没有则执行
   arr.push(this[i]); //将当前项push到临时数组中
  }
 }
 console.timeEnd("数组去重法2"); //记录结束执行的时间
 return arr;
}

数组去重法3:

Array.prototype.unique3 = function(){
 console.time("数组去重法3"); //记录开始执行的时间
 var arr = [this[0]]; //创建一个临时数组,并将要去重数组的第一项存入临时数组
 for(var i = 1; i < this.length; i++) { //从要去重数组第二项开始遍历
  if (this.indexOf(this[i]) == i){ //判断临时数组中是否存有当前项,没有则执行
   arr.push(this[i]); //将当前项push到临时数组中
  }
 }
 console.timeEnd("数组去重法3"); //记录结束执行的时间
 return arr;
}

效率测试方法:

var arr1 = []; //创建一个要去重的数组
for(var i = 0; i < 200000; i++){ //遍历200000个数据
 arr1.push(parseInt(Math.random() * 10) + 1); //将所有数据返回为随机数(1-10之间)的数, 并push到要去重的数组中
}

console.log(arr1.unique1()); //打印数组去重法1的执行时间
console.log(arr1.unique2()); //打印数组去重法2的执行时间
console.log(arr1.unique3()); //打印数组去重法3的执行时间

效率测试结果:

JavaScript数组去重的几种方法效率测试

总结

以上就是关于JavaScript几种数组去重的方法效率测试,希望测试的结果对大家选择使用数组去重方法能有所帮助,如果有疑问大家可以留言交流。谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
input 输入框内的输入事件详细分析
Mar 17 Javascript
用Juery网页选项卡实现代码
Jun 13 Javascript
js控制滚动条缓慢滚动到顶部实现代码
Mar 20 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
Nov 20 Javascript
JS 仿腾讯发表微博的效果代码
Dec 25 Javascript
JavaScript中的原型继承基础学习教程
May 06 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
Jan 16 Javascript
jQuery实现验证用户登录
Dec 10 jQuery
keep-Alive搭配vue-router实现缓存页面效果的示例代码
Jun 24 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
Jan 27 Javascript
关于Vue Router的10条高级技巧总结
May 06 Vue.js
Vue Element-ui表单校验规则实现
Jul 09 Vue.js
Javascript 实现简单计算器实例代码
Oct 23 #Javascript
JavaScript页面实时显示当前时间实例代码
Oct 23 #Javascript
jquery 实现回车登录详解及实例代码
Oct 23 #Javascript
AngularJS ng-repeat数组有重复值的解决方法
Oct 23 #Javascript
web前端开发upload上传头像js示例代码
Oct 22 #Javascript
jQuery中$.ajax()方法参数解析
Oct 22 #Javascript
详解Javascript函数声明与递归调用
Oct 22 #Javascript
You might like
php生成mysql的数据字典
2016/07/07 PHP
jquery 学习笔记一
2010/04/07 Javascript
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
js有序数组的连接问题
2013/10/01 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
浅谈javascript中的constructor
2016/06/08 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
JS实现判断有效的数独算法示例
2019/02/25 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
Vue.js递归组件实现组织架构树和选人功能
2019/07/04 Javascript
微信小程序进入广告实现代码实例
2019/09/19 Javascript
vue.js+element 默认提示中英文操作
2020/11/11 Javascript
ES6字符串的扩展实例
2020/12/21 Javascript
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
python回调函数的使用方法
2014/01/23 Python
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
python 创建一个空dataframe 然后添加行数据的实例
2018/06/07 Python
Python帮你微信头像任意添加装饰别再@微信官方了
2019/09/25 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
大一期末自我鉴定
2013/12/13 职场文书
十八大报告观后感
2014/01/28 职场文书
《庐山的云雾》教学反思
2014/04/22 职场文书
五一劳动节活动总结
2015/02/09 职场文书
2015年八一建军节演讲稿
2015/03/19 职场文书
教师个人师德工作总结2015
2015/05/12 职场文书
Python爬虫进阶之Beautiful Soup库详解
2021/04/29 Python
Python的三个重要函数详解
2022/01/18 Python
vue实现移动端div拖动效果
2022/03/03 Vue.js
配置nginx负载均衡
2022/05/06 Servers