两种常用的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 相关文章推荐
json格式的时间显示为正常年月日的方法
Sep 08 Javascript
jquery的each方法使用示例分享
Mar 25 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
Sep 04 Javascript
深入理解jQuery之防止冒泡事件
May 24 Javascript
jQuery自适应轮播图插件Swiper用法示例
Aug 24 Javascript
Bootstrap导航条学习使用(二)
Feb 08 Javascript
200行代码实现blockchain 区块链实例详解
Mar 14 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
Sep 17 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
Dec 11 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
Dec 19 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
Apr 29 Javascript
微信小程序wx.navigateTo方法里的events参数使用详情及场景
Jan 07 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基础知识:函数基础知识
2006/12/13 PHP
QueryPath PHP 中的jQuery
2010/04/11 PHP
php iconv() : Detected an illegal character in input string
2010/12/05 PHP
PHP编程中尝试程序并发的几种方式总结
2016/03/21 PHP
Thinkphp 中 distinct 的用法解析
2016/12/14 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
推荐dojo学习笔记
2007/03/24 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
node.js [superAgent] 请求使用示例
2015/03/13 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
Vue2.0父子组件传递函数的教程详解
2017/10/16 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
Python的math模块中的常用数学函数整理
2016/02/04 Python
Python书单 不将就
2017/07/11 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
Python登录注册验证功能实现
2018/06/18 Python
Python 面试中 8 个必考问题
2018/11/16 Python
python调用matlab的m自定义函数方法
2019/02/18 Python
Django在pycharm下修改默认启动端口的方法
2019/07/26 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
详解Python IO编程
2020/07/24 Python
python 基于opencv去除图片阴影
2021/01/26 Python
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
美国男装连锁零售商:Men’s Wearhouse
2016/10/14 全球购物
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
高中体育教学反思
2014/01/24 职场文书
上课睡觉检讨书
2014/01/28 职场文书
《小草和大树》教学反思
2014/02/16 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
在校证明模板
2015/06/17 职场文书
初中物理教学反思
2016/02/19 职场文书
2016年大学生社区服务活动总结
2016/04/06 职场文书
爱国之歌(8首)
2019/09/29 职场文书
如何理解及使用Python闭包
2021/06/01 Python