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 相关文章推荐
Web Inspector:关于在 Sublime Text 中调试Js的介绍
Apr 18 Javascript
javascript为下拉列表动态添加数据项
May 23 Javascript
JavaScript字符串常用类使用方法汇总
Apr 14 Javascript
理解JS绑定事件
Jan 19 Javascript
javascript+HTML5自定义元素播放焦点图动画
Feb 21 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
Jun 20 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
Sep 05 Javascript
jQuery实现获取元素索引值index的方法
Sep 18 Javascript
利用javascript如何随机生成一定位数的密码
Sep 22 Javascript
vue.js实现左边导航切换右边内容
Oct 21 Javascript
利用H5api实现时钟的绘制(javascript)
Sep 13 Javascript
vuex中遇到的坑,vuex数据改变,组件中页面不渲染操作
Nov 16 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 内存缓存加速功能memcached安装与用法
2009/09/03 PHP
Function eregi is deprecated (解决方法)
2013/06/21 PHP
ThinkPHP模型详解
2015/07/27 PHP
PHP 前加at符合@的作用解析
2015/07/31 PHP
JavaScript中的面向对象介绍
2012/06/30 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
用javascript将数据导入Excel示例代码
2014/09/10 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
2015/02/02 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
jquery中封装函数传递当前元素的方法示例
2017/05/05 jQuery
webpack热模块替换(HMR)/热更新的方法
2018/04/05 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
原生JS实现$.param() 函数的方法
2018/08/10 Javascript
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
layUI实现前端分页和后端分页
2019/07/27 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
2019/08/27 jQuery
vue中element 的upload组件发送请求给后端操作
2020/09/07 Javascript
Python 基础教程之闭包的使用方法
2017/09/29 Python
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
python 动态绘制爱心的示例
2020/09/27 Python
python 调用Google翻译接口的方法
2020/12/09 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
介绍一下常见的木马种类
2014/11/15 面试题
财务出纳员岗位职责
2013/11/26 职场文书
函授毕业自我鉴定
2013/12/19 职场文书
拓展培训心得体会
2014/01/04 职场文书
单位接收函格式
2015/01/30 职场文书
反腐倡廉心得体会2016
2016/01/13 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
营销策划分析:怎么策划才能更好销量产品?
2019/09/04 职场文书