两种常用的javascript数组去重方法思路及代码


Posted in Javascript onMarch 26, 2013

第一种是比较常规的方法
思路:
1.构建一个新的数组存放结果
2.for循环中每次从原数组中取出一个元素,用indexOf查找新数组中是否有该元素
3.若没有,则存到结果数组中

Array.prototype.unique1 = function(){ 
var res = []; 
for(var i = 0; i < this.length; i++){ 
if(res.indexOf(this[i]) == -1){ 
res.push(this[i]); 
} 
} 
return res; 
} 
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0] 
alert(arr.unique1())

此基础上可以略微优化,但原理不变,效果也不明显
Array.prototype.unique1 = function(){ 
var res = [this[0]];//直接将原数组中的第一个元素存入构建的新数组中 
for(var i = 1; i < this.length; i++){//循环从第二个元素开始 
if(res.indexOf(this[i]) == -1){ 
res.push(this[i]); 
} 
} 
return res; 
} 
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0] 
alert(arr.unique1())

第二种方法比上面的方法效率要高
思路:
1.先将原数组进行排序
2.检查原数组中的第i个元素 与 结果数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置
3.如果不相同,则将该元素存入结果数组中
Array.prototype.unique2 = function(){ 
this.sort(); //先排序 
var res = [this[0]]; 
for(var i = 1; i < this.length; i++){ 
if(this[i] !== res[res.length - 1]){ 
res.push(this[i]); 
} 
} 
return res; 
} 
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0] 
alert(arr.unique2())
Javascript 相关文章推荐
PJBlog插件 防刷新的在线播放器
Oct 25 Javascript
jquery下实现overlay遮罩层代码
Aug 25 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
Feb 08 Javascript
JS原型与原型链的深入理解
Feb 15 Javascript
微信小程序 PHP生成带参数二维码
Feb 21 Javascript
react-native DatePicker日期选择组件的实现代码
Sep 12 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
Sep 28 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
Oct 25 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
Jan 21 Javascript
vuex 中插件的编写案例解析
Jun 10 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
Dec 17 Javascript
JavaScript常用工具函数库汇总
Sep 17 Javascript
javascript变量作用域使用中常见错误总结
Mar 26 #Javascript
定时器(setTimeout/setInterval)调用带参函数失效解决方法
Mar 26 #Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
Mar 26 #Javascript
jquery 无限级联菜单案例分享
Mar 26 #Javascript
JSON辅助格式化处理方法
Mar 26 #Javascript
html+css+js实现xp window界面及有关功能
Mar 26 #Javascript
jquery图片放大镜功能的实例代码
Mar 26 #Javascript
You might like
第十节 抽象方法和抽象类 [10]
2006/10/09 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
2017/06/27 PHP
PHP的PDO事务与自动提交
2019/01/24 PHP
PHP dirname功能及原理实例解析
2020/10/28 PHP
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
IE下Ajax缓存问题的快速解决方法(get方式)
2014/01/09 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
2017/11/09 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
vue实现移动端input上传视频、音频
2020/08/18 Javascript
老生常谈Python进阶之装饰器
2017/05/11 Python
基于python实现在excel中读取与生成随机数写入excel中
2018/01/04 Python
PyTorch CNN实战之MNIST手写数字识别示例
2018/05/29 Python
Sanic框架请求与响应实例分析
2018/07/16 Python
Python高级特性切片(Slice)操作详解
2018/09/27 Python
Django实现学生管理系统
2019/02/26 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
基于python的Paxos算法实现
2019/07/03 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
python 并发编程 阻塞IO模型原理解析
2019/08/20 Python
用Pelican搭建一个极简静态博客系统过程解析
2019/08/22 Python
Python ATM功能实现代码实例
2020/03/19 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
Kipling凯浦林美国官网:世界著名时尚休闲包袋品牌
2016/08/24 全球购物
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
电子商务自荐书范文
2014/01/04 职场文书
空乘英文求职信
2014/04/13 职场文书
学校感恩节活动策划方案
2014/10/06 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
初婚未育证明样本
2015/06/18 职场文书
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python