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等比例缩放图片控制超出范围的图片
Aug 06 Javascript
js的image onload事件使用遇到的问题
Jul 15 Javascript
jquery分割字符串的方法
Jun 24 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
Jul 27 Javascript
基于javascript实现的购物商城商品倒计时实例
Dec 11 Javascript
微信小程序中的onLoad详解及简单实例
Apr 05 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
Apr 21 Javascript
利用node实现一个批量重命名文件的函数
Dec 21 Javascript
vue 组件中添加样式不生效的解决方法
Jul 06 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
Aug 27 Javascript
微信公众平台 发送模板消息(Java接口开发)
Apr 17 Javascript
vue实现绑定事件的方法实例代码详解
Jun 20 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
pdo中使用参数化查询sql
2011/08/11 PHP
PHP APC配置文件2套和参数详解
2014/06/11 PHP
php限制上传文件类型并保存上传文件的方法
2015/03/13 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
2013/09/02 Javascript
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
EasyUi datagrid 实现表格分页
2015/02/10 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
2016/12/07 Javascript
Ajax实现不刷新取最新商品
2017/03/01 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
2017/07/13 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
2018/01/06 Python
Python多进程与服务器并发原理及用法实例分析
2018/08/21 Python
Python中按键来获取指定的值
2019/03/02 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
基于pytorch的lstm参数使用详解
2020/01/14 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
关于python3.9安装wordcloud出错的问题及解决办法
2020/11/02 Python
加拿大便宜的隐形眼镜商店:Clearly
2016/09/15 全球购物
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
什么是抽象
2015/12/13 面试题
24岁生日感言
2014/01/13 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
党支部鉴定意见
2015/06/02 职场文书
2019学生会干事辞职信
2019/06/27 职场文书
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
2022/01/22 MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
2022/06/14 MySQL