欢迎使用CSDN-markdown编辑器
来源:互联网 发布:重庆西南大学网络学费 编辑:程序博客网 时间:2024/05/17 01:30
四种常见的数组去重方法与执行效率分析
//数组去重的方法1 Array.prototype.unique1 = function(){ var arr = []; //声明结果数组 var json = {}; //声明一个hash对象 for(var i=0; i<this.length; i++){ if(!json[this[i]]){ //如果hash对象没有当前数组中的值,则添加当前元素到hash对象中,并push到结果数组中 arr.push(this[i]); json[this[i]] = 1; } } return arr; //返回结果数组 } //数组去重方法2 Array.prototype.unique2 = function(){ //声明一个结果数组 var arrTotal = [this[0]]; //遍历要去重的数组 var len = this.length; for(var i=0; i<len; i++){ //遍历储存数组,查看当前元素是否在结果数组中 for(var j=0; j<arrTotal.length; j++){ //若结果数组没有该元素,则将该元素push到结果数组中 if(arrTotal.indexOf(this[i]) == -1){ arrTotal.push(this[i]); } } } return arrTotal; //返回结果数组 } //数组去重方法三 Array.prototype.unique3 = function(){ //将原数组进行排序 this.sort(); //声明一个结果数组 var res = [this[0]]; var len = this.length; for(var i=0; i<len; i++){ if(this[i] != res[res.length-1]){ //如果当前元素与结果元素的最后一个元素不相等, res.push(this[i]); //则把当前元素添加到结果数组中 } } return res; //返回结果数组 } //数组去重方法四 Array.prototype.unique4 = function(){ var res = [this[0]]; //此处的this是调用这个方法的数组 for(var i=1; i<this.length; i++){ if(arr.indexOf(this[i]) == i){ //如果当前元素第一次出现的位置等于该元素的下标值 res.push(this[i]) // 添加到结果数组中 } } return res; //返回结果数组 }最后调用这四种方法:首先声明一个数组变量var arr = [0, 30, 20, 1, 2, 3, 4, 5, 6, 7, 6, 544, 43, 2, 22, 1, 1, 1, 2,4,5,1, 3, 48];console.log(arr.unique1());console.log(arr.unique2());console.log(arr.unique3());console.log(arr.unique4());打印出结果如下:[0, 30, 20, 1, 2, 3, 4, 5, 6, 7, 544, 43, 22, 48][0, 30, 20, 1, 2, 3, 4, 5, 6, 7, 544, 43, 22, 48][0, 1, 2, 20, 22, 3, 30, 4, 43, 48, 5, 544, 6, 7][0, 1, 2, 20, 22, 3, 30, 4, 43, 48, 5, 544, 6, 7]
效率分析:
方法2和方法4用到了indexOf方法,该方法会遍历数组,可以理解为我们要找出一个小偷藏在一栋楼的哪个房间,需要每个房间的去查找,而在hash对象中查找元素很简单,可以理解为我们拿着门牌号直接去抓小偷,建议使用方法1和方法3!!
欢迎各位童鞋交流前端开发各种问题!
阅读全文
0 0
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 程序启动后, 可以从键盘输入接收多个整数, 直到输入quit时结束输入. 把所有输入的整数倒序排列打印
- PatternLockView滑动解锁
- Jquery获取手机验证码后60秒内禁止重新获取 简单例子
- 使用Keras搭建一个CNN处理MNIST数据
- 鸿业revit电气插件使用结果
- 欢迎使用CSDN-markdown编辑器
- 费用流+构图——Luogu1251 [网络流24题]餐巾计划问题([HNOI2001]软件开发)
- CNN经典网络模型摘要--AlexNet、ZFnet、GoogleNet、VGG、ResNet
- POJ 1473 There's Treasure Everywhere! 笔记
- 【Java多线程】并发容器Collections
- 深度学习笔记八:长短时记忆网络LSTM(基本理论)
- HTTP常用状态码
- spring配置,事务,注解
- 激光雷达学习笔记(四)定位