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 相关文章推荐
js验证是否为数字的总结
Apr 14 Javascript
JS动态添加与删除select中的Option对象(示例代码)
Dec 25 Javascript
jQuery对html元素的取值与赋值实例详解
Dec 18 Javascript
Vue.js实现简单动态数据处理
Feb 13 Javascript
JavaScript省市级联下拉菜单实例
Feb 14 Javascript
如何选择jQuery版本 1.x? 2.x? 3.x?
Apr 01 jQuery
JS库之ParticlesJS使用简介
Sep 12 Javascript
AngularJS实现表单验证功能详解
Oct 12 Javascript
BootStrap 标题设置跨行无效的解决方法
Oct 25 Javascript
vue-cli webpack 引入swiper的操作方法
Sep 15 Javascript
mpvue网易云短信接口实现小程序短信登录的示例代码
Apr 03 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
Nov 11 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/06/23 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
php中print(),print_r(),echo()的区别详解
2014/12/01 PHP
php内嵌函数用法实例
2015/03/20 PHP
PHP结合Vue实现滚动底部加载效果
2017/12/17 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
php intval函数用法总结
2019/04/14 PHP
javascript 写类方式之九
2009/07/05 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
jquery点击改变class并toggle的实现代码
2016/05/15 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
关于Stream和Buffer的相互转换详解
2017/07/26 Javascript
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
Echarts之悬浮框中的数据排序问题
2018/11/08 Javascript
vue ajax 拦截原理与实现方法示例
2019/11/29 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
python+PyQT实现系统桌面时钟
2020/06/16 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
Django发送邮件和itsdangerous模块的配合使用解析
2019/08/10 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
日本非常有名的内衣丝袜品牌:GUNZE
2017/01/06 全球购物
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
计算机网络毕业生自荐信
2013/10/01 职场文书
乔迁之喜主持词
2014/03/27 职场文书
我爱读书演讲稿
2014/05/07 职场文书
住院医师规范化培训实施方案
2014/06/12 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
2014年助理工程师工作总结
2014/11/14 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
检讨书模板
2015/01/29 职场文书
部门2015年度工作总结
2015/04/29 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
MySQL数据库如何给表设置约束详解
2022/03/13 MySQL