两种常用的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 相关文章推荐
jquery ajax 登录验证实现代码
Sep 23 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
Dec 08 Javascript
js实现的常用的左侧导航效果
Oct 17 Javascript
jquery 获取dom固定元素 添加样式的简单实例
Feb 04 Javascript
使用js实现数据格式化
Dec 03 Javascript
JS解析XML文件和XML字符串详解
Apr 17 Javascript
基于jquery编写的放大镜插件
Mar 23 Javascript
微信小程序 本地数据存储实例详解
Apr 13 Javascript
使用D3.js制作图表详解
Aug 13 Javascript
基于D3.js实现时钟效果
Jul 17 Javascript
vue-cli3+typescript初体验小结
Feb 28 Javascript
JavaScript惰性载入函数实例分析
Mar 27 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
一个颜色轮换的简单例子
2006/10/09 PHP
PHP中函数rand和mt_rand的区别比较
2012/12/26 PHP
PHP如何利用P3P实现跨域
2013/08/24 PHP
php实现水仙花数的4个示例分享
2014/04/08 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
php通过Chianz.com获取IP地址与地区的方法
2015/01/14 PHP
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
2011/09/12 Javascript
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
JS中捕获console.log()输出的方法
2015/04/16 Javascript
Javascript节点关系实例分析
2015/05/15 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
2015/12/15 Javascript
JavaScript九九乘法口诀表的简单实现
2016/10/04 Javascript
js实现右键自定义菜单
2016/12/03 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
从零开始搭建vue移动端项目到上线的步骤
2018/10/15 Javascript
layui select 禁止点击的实现方法
2019/09/05 Javascript
[02:48]DOTA2英雄基础教程 暗夜魔王
2013/12/12 DOTA
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
Python字符串转换成浮点数函数分享
2015/07/24 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
python里 super类的工作原理详解
2019/06/19 Python
pygame实现五子棋游戏
2019/10/29 Python
海淘零差价,宝贝全球购: 宝贝格子
2016/08/24 全球购物
德国百年厨具品牌WMF美国站:WMF美国
2016/09/12 全球购物
阿玛尼化妆品美国官网:Giorgio Armani Beauty
2017/02/02 全球购物
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
TobyDeals美国:在电子产品上获得最好的优惠和折扣
2019/08/11 全球购物
自我评价如何写好?
2014/01/05 职场文书
优秀班集体申报材料
2014/12/25 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
2016年艾滋病宣传活动总结
2016/04/01 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书