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 相关文章推荐
关于jquery动态增减控件的一些想法和小插件
Aug 01 Javascript
jQuery Clone Bug解决代码
Dec 22 Javascript
19个很有用的 JavaScript库推荐
Jun 27 Javascript
日历查询的算法 如何计算某一天是星期几
Dec 12 Javascript
使用原生js写的一个简单slider
Apr 29 Javascript
jquery处理json数据实例分析
Jun 03 Javascript
详解JavaScript对W3C DOM模版的支持情况
Jun 16 Javascript
jquery判断复选框选中状态以及区分attr和prop
Dec 18 Javascript
easyui-combobox 实现简单的自动补全功能示例
Nov 08 Javascript
如何利用ES6进行Promise封装总结
Feb 11 Javascript
Vue.js实现大屏数字滚动翻转效果
Nov 29 Javascript
vue中使用vue-pdf的方法详解
Sep 05 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 SplObjectStorage使用实例
2015/05/12 PHP
PHP下用Swoole实现Actor并发模型的方法
2019/06/12 PHP
JavaScript 不只是脚本
2007/05/30 Javascript
FF IE兼容性的修改小结
2009/09/02 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
JS小功能(button选择颜色)简单实例
2013/11/29 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
2015/06/19 Javascript
JS事件添加和移出的兼容写法示例
2016/06/20 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
Json实现传值到后台代码实例
2020/06/30 Javascript
Vue插槽_特殊特性slot,slot-scope与指令v-slot说明
2020/09/04 Javascript
[01:54]胎教DOTA2 准妈妈玩家现身中国区预选赛
2016/06/26 DOTA
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
python3实现字符串操作的实例代码
2019/04/16 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
CSS3实现跳动的动画效果
2016/09/12 HTML / CSS
朗仕(Lab series)英国官网:雅诗兰黛集团男士专属护肤品牌
2017/11/28 全球购物
学生宿舍管理制度
2014/01/30 职场文书
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
《燕子专列》教学反思
2014/02/21 职场文书
心理咨询专业自荐信
2014/07/07 职场文书
青年标兵事迹材料
2014/08/16 职场文书
三人合伙协议书范本
2014/10/29 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
2014年化验室工作总结
2014/11/21 职场文书
2015年安全工作总结范文
2015/04/02 职场文书
Python爬虫之爬取二手房信息
2021/04/27 Python
Golang 如何实现函数的任意类型传参
2021/04/29 Golang
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang
css弧边选项卡的项目实践
2023/05/07 HTML / CSS