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 相关文章推荐
JavaScript之HTMLCollection接口代码
Apr 27 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
Jul 14 Javascript
JavaScript实现的购物车效果可以运用在好多地方
May 09 Javascript
原生js实现日期联动
Jan 12 Javascript
JavaScript数据结构和算法之图和图算法
Feb 11 Javascript
JavaScript中字符串分割函数split用法实例
Apr 07 Javascript
jQuery中slidedown与slideup方法用法示例
Sep 16 Javascript
JavaScript中数组Array.sort()排序方法详解
Mar 01 Javascript
Node.js中多进程模块Cluster的介绍与使用
May 27 Javascript
Layui实现带查询条件的分页
Jul 27 Javascript
Node.js系列之连接DB的方法(3)
Aug 30 Javascript
JavaScript算法学习之冒泡排序和选择排序
Nov 02 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
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
深入PHP内存相关的功能特性详解
2013/06/08 PHP
php截取字符串函数分享
2015/02/02 PHP
学习php设计模式 php实现合成模式(composite)
2015/12/08 PHP
Yii核心验证器api详解
2016/11/23 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
asm.js使用示例代码
2013/11/28 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
jQuery实现验证年龄简单思路
2016/02/24 Javascript
jQuery中使用animate自定义动画的方法
2016/05/29 Javascript
jQuery获取file控件中图片的宽高与大小
2016/08/04 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
python算法演练_One Rule 算法(详解)
2017/05/17 Python
Python判断中文字符串是否相等的实例
2018/07/06 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
详解python解压压缩包的五种方法
2019/07/05 Python
python 生成器需注意的小问题
2020/09/29 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
百思买美国官网:Best Buy
2016/07/28 全球购物
Nike德国官网:Nike.com (DE)
2018/11/13 全球购物
好的自荐信包括什么内容
2013/11/07 职场文书
零件设计自荐信范文
2013/11/27 职场文书
英语自荐信范文
2013/12/11 职场文书
初中三好学生自我鉴定
2014/04/07 职场文书
《欢乐的泼水节》教学反思
2014/04/22 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
LeetCode189轮转数组python示例
2022/08/05 Python
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers