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 31 Javascript
JavaScript对象数组排序函数及六个用法
Dec 23 Javascript
JS组件Bootstrap Select2使用方法解析
May 30 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
Oct 30 Javascript
利用jquery实现实时更新歌词的方法
Jan 06 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
Dec 22 Javascript
原生JS实现瀑布流插件
Feb 06 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
Mar 22 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
Aug 28 jQuery
10行代码实现微信小程序滑动tab切换
Dec 28 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
Jul 20 Javascript
js实现限定范围拖拽的示例
Oct 26 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数据库操作面向对象的优点
2006/10/09 PHP
php数组删除元素示例
2014/03/21 PHP
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
php读取远程gzip压缩网页的方法
2014/12/29 PHP
php实现用于计算执行时间的类实例
2015/04/18 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
2020/12/30 PHP
表单元素事件 (Form Element Events)
2009/07/17 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
JavaScript?Apple设备检测示例代码
2013/11/15 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
利用Node.js对文件进行重命名
2017/03/12 Javascript
微信小程序实现图片上传功能
2018/05/28 Javascript
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
有趣的JavaScript隐式类型转换操作实例分析
2020/05/02 Javascript
详解Typescript里的This的使用方法
2021/01/08 Javascript
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
2016/07/02 Python
Swift中的协议(protocol)学习教程
2016/07/08 Python
Python SQLite3数据库日期与时间常见函数用法分析
2017/08/14 Python
对Python中内置异常层次结构详解
2018/10/18 Python
对django layer弹窗组件的使用详解
2019/08/31 Python
python装饰器的特性原理详解
2019/12/25 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
2020/03/10 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
CSS3实例分享--超炫checkbox复选框和radio单选框
2014/09/01 HTML / CSS
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
幼教简历自我评价
2014/01/28 职场文书
电子工程专业毕业生求职信
2014/03/14 职场文书
《草原的早晨》教学反思
2014/04/08 职场文书
创先争优活动承诺书
2014/08/30 职场文书
幼儿学前班评语
2014/12/29 职场文书
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android