两种常用的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 相关文章推荐
CSS常用网站布局实例
Apr 03 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
Sep 02 Javascript
js自动生成对象的属性示例代码
Oct 28 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
Mar 19 Javascript
Javascript Object 对象学习笔记
Dec 17 Javascript
JQuery查找DOM节点的方法
Jun 11 Javascript
详解JavaScript中localStorage使用要点
Jan 13 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
Jun 08 Javascript
JavaScript高仿支付宝倒计时页面及代码实现
Oct 21 Javascript
vue监听键盘事件的快捷方法【推荐】
Jul 11 Javascript
jQuery实现左右两个列表框的内容相互移动功能示例
Jan 27 jQuery
vue3.0中的双向数据绑定方法及优缺点
Aug 01 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
php 在windows下配置虚拟目录的方法介绍
2013/06/26 PHP
datePicker——日期选择控件(with jquery)
2007/02/20 Javascript
关于捕获用户何时点击window.onbeforeunload的取消事件
2011/03/06 Javascript
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
老生常谈 关于JavaScript的类的继承
2016/06/24 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
2016/07/04 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
vue在手机中通过本机IP地址访问webApp的方法
2018/08/15 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
python中引用与复制用法实例分析
2015/06/04 Python
python实现在IDLE中输入多行的方法
2018/04/19 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
Python 使用类写装饰器的小技巧
2018/09/30 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
Python3中urlencode和urldecode的用法详解
2019/07/23 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
浅谈Python 函数式编程
2020/06/20 Python
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
安全生产先进个人材料
2014/02/06 职场文书
推荐信模板
2014/05/09 职场文书
校园安全标语
2014/06/07 职场文书
党员查摆剖析材料
2014/10/10 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
详解python字符串驻留技术
2021/05/21 Python