javascript数组查重方法总结
文章参考地址:http://blog.csdn.net/chengxuyuan20100425/article/details/8497277
题目
对下列数组去重:
var arr = ['aa','bb','cc','',1,0,'1',1,'bb',null,undefine,null];
要求考虑兼容性和效率
方法一
function unique(arr){var result = [];for (var i = 0;i<arr.length;i++){//如果当前数组的第i项已经保存进了临时数组,忽略掉//否则的话把当前项push到临时数组里面if(result.indexOf(arr[i]) < 0) result.push(arr[i]);//indexOf 返回元素在result中的位置,如果没有返回-1;}return result;
}
var arr = ['aa','bb','cc','',1,0,'1',1,'bb',null,undefine,null];
console.log(unique(arr));
总结:两个问题:1.加上indexOf()相当于加载两次循环
2.indexOf()在ie9以下不兼容
方法二
function unique(arr){var result = [];var hash = {};for ( var i=0;i<arr.length;i++){var key = (typeof arr[i]) + arr[i];if(!hash[key]){result.push(arr[i]);hash[key] = true;}}return result;
}
var arr = ['aa','bb','cc','',1,0,'1',1,'bb',null,undefine,null];
console.log(unique(arr));
通过hash表,把已经出现过的元素通过下标的形式存入一个object内。下标的引用比indexOf搜索数组快的多。
方法三
function unique(arr){var n = [this[0]]; //结果数组for(var i =1;i<this.length;i++){ //从第二项开始遍历//如果当前数组的第i项在当前数组中第一次出现的位置不是i//那么表示第i项是重复的,忽略掉。否则存入结果数组if(this.indexOf(this[i]) == i) n.push(this[i]);}return n;
}
var arr = ['aa','bb','cc','',1,0,'1',1,'bb',null,undefine,null];
console.log(unique(arr));
方法四
function unique(arr){this.sort();var re = [this[0]];for (var i =1;i<this.length;i++){if( this[i] != re[re,length-1] ){re.push(this[i]);}}
}
var arr = ['aa','bb','cc','',1,0,'1',1,'bb',null,undefine,null];
console.log(unique(arr));
先把数组排序,然后比较相邻的两个值。
方法五
//去重(ES6 Set)
function unique2(array){
return Array.from(new Set(array));
}
var arr = ['aa','bb','cc','',1,0,'1',1,'bb',null,undefine,null];
console.log(unique(arr));
ES6 新方法 form,所以兼容性有问题。
转载于:https://www.cnblogs.com/qjqcs/p/5973918.html
javascript数组查重方法总结相关推荐
- Vue字符串查重 、数组查重、不重复的文字高亮显示
Vue字符串查重 ,不重复的文字高亮显示 先放效果图 问题拆分 1.要改变颜色为单个字符颜色,数据格式需改变. 2.对数组查重,获取重复元素 3.元素对比,找出非重复元素 4.添加对应样式 改变数据格 ...
- 计算机类sci查重,SCI科研写作:国自然标书查重方法
就在今天,国家自然科学基金立项结果公布了,可能大家的心情会非常忐忑,无论中标与否,大家都想去分析:怎么样才能离中标更进一步呢?小编在这里整理一些关于国自然的资料,有备无患,查漏补缺,看看自己的问题出在 ...
- Javascript数组的 splice方法介绍
Javascript数组的 splice 方法介绍 splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容.此方法会改变原数组. 语法格式 array ...
- Javascript 数组求和的方法
1.应用场景 主要用于数组求和. 2.学习/操作 JavaScript 数组求和的方法 var array = [1, 2, 3, 4, 5]; var sum = 0; 1.for循环 for (l ...
- Hadoop 图像小文件查重方法
https://eldadlevy.wordpress.com/2011/02/05/hadoop-binary-files-processing-entroduced-by-image-duplic ...
- Javascript数组常见的方法
分为两种:原型(实例)方法和静态函数 第一类:原型方法: 栈方法(后进先出) push 参数:任意个 作用:将任意数量的参数逐个添加到数组尾部 返回值: 新数组的长度 影响:破坏了原数组 pop 参数 ...
- JavaScript数组常用的方法总结
导读:在实际开发中,前端工程师除了写页面布局及样式还要对后端返回的数据进行处理,返回的数据大多数是json格式,一般都是返回一个对象或者数组,下面对常用的数组的使用方法进行总结,方便在开发中手到擒来! ...
- excel三种查重方法
业务目标: 根据B.C.D列的数据是否完全一样,来判断是否是重复数据 方法A:删除重复项 选中B.C.D列,点击数据菜单栏下的删除重复项,重复项被删除,简单粗暴 优点:简单 缺点:难以确定被删除的是哪 ...
- JavaScript数组内置方法-知识
/* * 数组中常用的内置方法:基于这些方法可以让我们有效的对数组进行操作 * console.dir(Array.prototype) 查看数组内置方法 ...
最新文章
- Ubuntu 14.04上使用CMake编译MXNet源码操作步骤(Python)
- Oracle Parallel模式
- 02-Unity深入浅出(二)
- .net post xml 数据
- 好的重构方法才能摆脱“屎山”
- bitsadmin命令(Windows下载文件命令)
- 赠书5本包邮:数据思维实践、Cloud Native分布式架构原理与实践
- Varnish由于cookie过大返回503
- leetcode--Longest Substring Without Repeating Characters
- linux librtmp 编译,在linux系统下安装python librtmp包的实现方法
- excel游戏_Excel Jawbreak游戏
- 常用数据接口汇总,百度、谷歌、头条、微博指数,高校名单,疫情数据...
- php 新浪微博模拟登陆,python模拟新浪微博登陆功能(新浪微博爬虫)
- 仗剑走天涯,执手闯天下
- pycharm背景色和字体设置
- c++::举例_举例说明:网络
- Ubuntu 安装 uWSGI
- 树莓派自定义分辨率适配带鱼屏(2560*1080)
- GwcNet:逐组相关的立体匹配网络(CVPR 2019)
- EndNote X9插入参考文献的格式
热门文章
- 细胞转染的操作步骤及注意事项
- springboot不会运行gc_SpringBoot项目深度优化和Jvm调优
- SCI论文写作--IEEE的期刊和杂志区分
- 计算机视觉与深度学习 | 对恐怖袭击事件记录数据的量化分析(附源代码):博主的机器学习首秀(研究生数学建模二等奖)
- 软件测试中的 QM、QA、QC、测试规程、测试用例
- DELL R720 服务器 RAID阵列卡配置介绍
- java http 状态_Java HTTP连接似乎保持打开状态
- java atomiclong 使用_java并发:原子类之AtomicLong
- excelvba怎么设置不打开文件自动保存_自从有了这个工具,我的Office操作已经快到慢不下来了!(升级篇)...
- TensorFlow 笔记4--使用tensorboard