两种常用的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 相关文章推荐
“不能执行已释放的Script代码”错误的原因及解决办法
Sep 09 Javascript
基于jQuery的弹出消息插件 DivAlert之旅(一)
Apr 01 Javascript
js猜数字小游戏的简单实现代码
Jul 02 Javascript
flash调用js中的方法,让js传递变量给flash的办法及思路
Aug 07 Javascript
js中onload与onunload的使用示例
Aug 25 Javascript
jquery.cookie.js的介绍与使用方法
Feb 09 Javascript
vue-loader教程介绍
Jun 14 Javascript
JS之if语句对接事件动作逻辑(详解)
Jun 28 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
Sep 30 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
Nov 07 Javascript
javascript 设计模式之组合模式原理与应用详解
Apr 08 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
Jul 24 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
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
laravel 框架实现无限级分类的方法示例
2019/10/31 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
DOM下的节点属性和操作小结
2009/05/14 Javascript
jquery 常用操作方法
2010/01/28 Javascript
De facto standard 世界上不可思议的事实标准
2010/08/29 Javascript
jquery实现心算练习代码
2010/12/06 Javascript
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
js 数组操作之pop,push,unshift,splice,shift
2014/01/29 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
Vue学习之路之登录注册实例代码
2017/07/06 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
vue router动态路由设置参数可选问题
2019/08/21 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
JSONP解决JS跨域问题的实现
2020/05/25 Javascript
对pandas中Series的map函数详解
2018/07/25 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
python 解决flask uwsgi 获取不到全局变量的问题
2019/12/22 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
澳大利亚连衣裙和女装在线:Esther
2017/11/11 全球购物
英国家用电器购物网站:Hughes
2018/02/23 全球购物
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
注册资产评估专业求职信
2014/07/16 职场文书
社区党建工作汇报材料
2014/08/14 职场文书
员工团队活动方案
2014/08/28 职场文书
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书
房屋产权证明书
2014/10/15 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
世界水日宣传活动总结
2015/02/09 职场文书