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 相关文章推荐
自动更新作用
Oct 08 Javascript
input按钮的事件处理大全
Dec 10 Javascript
js验证输入是否为手机号码或电话号码示例
Dec 30 Javascript
购物车选中得到价格实现示例
Jan 26 Javascript
一个不错的js html页面倒计时可精确到秒
Oct 22 Javascript
javascript事件模型实例分析
Jan 30 Javascript
理解javascript正则表达式
Mar 08 Javascript
如何在Linux上安装Node.js
Apr 01 Javascript
Javascript中的arguments对象
Jun 20 Javascript
Node.js操作redis实现添加查询功能
May 25 Javascript
react-native之ART绘图方法详解
Aug 08 Javascript
JavaScript数组方法的错误使用例子
Sep 13 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面向对象全攻略 (九)访问类型
2009/09/30 PHP
php采集内容中带有图片地址的远程图片并保存的方法
2015/01/03 PHP
PHP使用第三方即时获取物流动态实例详解
2017/04/27 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
JS读取XML文件示例代码
2013/11/15 Javascript
按下回车键指向下一个位置的一个函数代码
2014/03/10 Javascript
JavaScript中5种调用函数的方法
2015/03/12 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
2015/03/25 Javascript
Sort()函数的多种用法
2016/03/20 Javascript
jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
2016/08/25 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
Javascript实现图片懒加载插件的方法
2016/10/20 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
vue 地图可视化 maptalks 篇实例代码详解
2019/05/21 Javascript
JS实现普通轮播图特效
2020/01/01 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
跟老齐学Python之??碌某?? target=
2014/09/12 Python
Python实现的检测网站挂马程序
2014/11/30 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
Python中random模块生成随机数详解
2016/03/10 Python
Python unittest模块用法实例分析
2018/05/25 Python
Python3 关于pycharm自动导入包快捷设置的方法
2019/01/16 Python
python实现爬山算法的思路详解
2019/04/09 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
CSS3+DIV实现漂亮的动画彩色标签
2016/06/16 HTML / CSS
全面解析HTML5中的标准属性与自定义属性
2016/02/18 HTML / CSS
G-Form护具官方网站:美国运动保护装备
2019/09/04 全球购物
机电一体化大学生求职信
2013/11/08 职场文书
2014年五四青年节活动策划书
2014/04/22 职场文书
大学计划书范文800字
2014/08/14 职场文书
教师节倡议书2015
2015/04/27 职场文书
一封真诚的自荐信帮你赢得机会
2019/05/07 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python