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 相关文章推荐
php 中序列化和json使用介绍
Jul 08 Javascript
js加密解密字符串可自定义密码因子
May 13 Javascript
JS实现为表格动态添加标题的方法
Mar 31 Javascript
JS+DIV+CSS排版布局实现美观的选项卡效果
Oct 10 Javascript
jQuery自定义动画函数实例详解(附demo源码)
Dec 10 Javascript
jquery悬浮提示框完整实例
Jan 13 Javascript
JS/jQ实现免费获取手机验证码倒计时效果
Jun 13 Javascript
JavaScript中Number对象的toFixed() 方法详解
Sep 02 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
Apr 25 Javascript
JavaScript 高性能数组去重的方法
Sep 20 Javascript
详解在vue-test-utils中mock全局对象
Nov 07 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
Jan 15 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/28 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
深入分析PHP引用(&amp;)
2014/09/04 PHP
php的XML文件解释类应用实例
2014/09/22 PHP
thinkphp分页集成实例
2017/07/24 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
PHP网页安全认证的实例详解
2017/09/28 PHP
初学JavaScript第二章
2008/09/30 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
Javascript事件实例详解
2013/11/06 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
关于vue-resource报错450的解决方案
2017/07/24 Javascript
jquery ajaxfileupload异步上传插件
2017/11/21 jQuery
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
2020/11/12 Javascript
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
对python:print打印时加u的含义详解
2018/12/15 Python
Python求解正态分布置信区间教程
2019/11/20 Python
python-web根据元素属性进行定位的方法
2019/12/13 Python
简单的Python人脸识别系统
2020/07/14 Python
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
.NET概念性的面试题
2012/02/29 面试题
绿色环保标语
2014/06/12 职场文书
与美同行演讲稿
2014/09/13 职场文书
三峡导游词
2015/01/31 职场文书
负责培养人意见
2015/06/05 职场文书
失恋33天观后感
2015/06/11 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js
SQL试题 使用窗口函数选出连续3天登录的用户
2022/04/24 Oracle