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 相关文章推荐
asp批量修改记录的代码
Jun 25 Javascript
javawscript 三级菜单的实现原理
Jul 01 Javascript
javascript中关于执行环境的杂谈
Aug 14 Javascript
Javascript脚本实现静态网页加密实例代码
Nov 05 Javascript
使用控制台破解百小度一个月只准改一次名字
Aug 13 Javascript
jQuery实现的手风琴侧边菜单效果
Mar 29 jQuery
vue用Object.defineProperty手写一个简单的双向绑定的示例
Jul 09 Javascript
vue实例中data使用return包裹的方法
Aug 27 Javascript
vue移动端模态框(可传参)的实现
Nov 20 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
Jul 29 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
Aug 28 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
Oct 29 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
回首过去10年中最搞笑的10部动漫,哪一部让你节操尽碎?
2020/03/03 日漫
Codeigniter中mkdir创建目录遇到权限问题和解决方法
2014/07/25 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
详解js闭包
2014/09/02 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
BootStrap Tooltip插件源码解析
2016/12/27 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
Node+Express+MongoDB实现登录注册功能实例
2017/04/23 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
AngularJS 中的数据源的循环输出
2017/10/12 Javascript
vue element-ui table表格滚动加载方法
2018/03/02 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
2019/05/16 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
浅谈python爬虫使用Selenium模拟浏览器行为
2018/02/23 Python
解决安装pycharm后不能执行python脚本的问题
2019/01/19 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
python中property和setter装饰器用法
2019/12/19 Python
Python 模拟动态产生字母验证码图片功能
2019/12/24 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
浅谈css3中calc在less编译时被计算的解决办法
2017/12/04 HTML / CSS
如何进行有效的自我评价
2013/09/27 职场文书
火车的故事教学反思
2014/02/11 职场文书
《风娃娃》教学反思
2014/04/19 职场文书
大学生通用个人自我评价
2014/04/27 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
2014年民政工作总结
2014/11/26 职场文书
校运会班级霸气口号
2015/12/24 职场文书
敬业奉献模范事迹材料(2016精选版)
2016/02/26 职场文书
python使用pymysql模块操作MySQL
2021/06/16 Python
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL