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 相关文章推荐
Jquery选择器 $实现原理
Dec 02 Javascript
jQuery Ajax使用 全解析
Dec 15 Javascript
js 实现日期灵活格式化的小例子
Jul 14 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
Jun 08 Javascript
jquery实现表单验证并阻止非法提交
Jul 09 Javascript
js调用百度地图及调用百度地图的搜索功能
Sep 07 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
Oct 28 Javascript
js实现随机点名小功能
Aug 17 Javascript
原生JavaScript实现的简单放大镜效果示例
Feb 07 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
Jan 18 jQuery
Vue跨域请求问题解决方案过程解析
Aug 07 Javascript
JS画布动态实现黑客帝国背景效果
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
Yii CDBCriteria常用方法实例小结
2017/01/19 PHP
php连接mysql数据库
2017/03/21 PHP
自制PHP框架之路由与控制器
2017/05/07 PHP
原生javascript获取元素样式属性值的方法
2010/12/25 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
简单实现的JQuery文本框水印插件
2016/06/14 Javascript
Javascript删除指定元素节点的方法
2016/06/21 Javascript
解决Window10系统下Node安装报错的问题分析
2016/12/13 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
2019/10/11 Python
增大python字体的方法步骤
2020/07/05 Python
手把手教你将Flask应用封装成Docker服务的实现
2020/08/19 Python
python函数超时自动退出的实操方法
2020/12/28 Python
惠普美国官方商店:HP Official Store
2016/08/28 全球购物
加拿大在线隐形眼镜专家:PerfectLens.ca
2016/11/19 全球购物
意大利领先的线上奢侈品销售电商:Eleonora Bonucci
2017/10/17 全球购物
现代家居用品及礼品:LBC Modern
2018/06/24 全球购物
澳大利亚手袋、珠宝和在线时尚精品店:The Way
2019/12/21 全球购物
进程的查看和调度分别使用什么命令
2013/12/14 面试题
会计职业生涯规划书
2014/01/13 职场文书
自荐信的基本格式
2014/02/22 职场文书
协议书与合同的区别
2014/04/18 职场文书
小学课外阅读总结
2014/07/09 职场文书
党旗在我心中演讲稿
2014/09/15 职场文书
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
表扬稿格式范文
2015/01/16 职场文书
转变工作作风心得体会
2016/01/23 职场文书
高中信息技术教学反思
2016/02/16 职场文书