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 相关文章推荐
一些相见恨晚的 JavaScript 技巧
Apr 25 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
Aug 07 Javascript
Bootstrap每天必学之导航
Nov 26 Javascript
javascript实现简单计算器效果【推荐】
Apr 19 Javascript
jQuery实现锚点向下平滑滚动特效示例
Aug 29 jQuery
利用nginx + node在阿里云部署https的步骤详解
Dec 19 Javascript
详解React开发必不可少的eslint配置
Feb 05 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
Sep 30 Javascript
iview在vue-cli3如何按需加载的方法
Oct 31 Javascript
vue项目首屏加载时间优化实战
Apr 23 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
May 05 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
Nov 08 Javascript
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 数组的一个悲剧?
2011/05/11 PHP
一个PHP验证码类代码分享(已封装成类)
2011/07/17 PHP
PHP中操作ini配置文件的方法
2013/04/25 PHP
PHP解码unicode编码的中文字符代码分享
2014/08/13 PHP
PHP间隔一段时间执行代码的方法
2014/12/02 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
javascript实现可改变滚动方向的无缝滚动实例
2013/06/17 Javascript
动态添加option及createElement使用示例
2014/01/26 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
JS和函数式语言的三特性
2014/03/05 Javascript
微信小程序 setData的使用方法详解
2017/04/20 Javascript
AngularJS集合数据遍历显示的实例
2017/12/27 Javascript
解决vue项目使用font-awesome,build后路径的问题
2018/09/01 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
Vue + Elementui实现多标签页共存的方法
2019/06/12 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
python中的格式化输出用法总结
2016/07/28 Python
python学生信息管理系统
2018/03/13 Python
django 发送邮件和缓存的实现代码
2018/07/18 Python
Python selenium根据class定位页面元素的方法
2019/02/26 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
2020/04/22 Python
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
顶碗少年教学反思
2014/02/21 职场文书
各营销点岗位职责范本
2014/03/05 职场文书
市场总经理岗位职责
2014/04/11 职场文书
电子装配专业毕业生求职信
2014/04/23 职场文书
2014年库房工作总结
2014/11/26 职场文书
出生证明格式
2015/06/15 职场文书
2019幼儿教师求职信(3篇)
2019/09/20 职场文书