两种常用的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获取Select选择的Text和Value(详细汇总)
Jan 25 Javascript
jQuery实现放大镜效果实例代码
Mar 17 Javascript
jQueryUI中的datepicker使用方法详解
May 25 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
Dec 26 Javascript
js仿小米手机上下滑动效果
Feb 05 Javascript
使用ajax的post同步执行(实现方法)
Dec 21 Javascript
vuex实现登录状态的存储,未登录状态不允许浏览的方法
Mar 09 Javascript
基于vue和react的spa进行按需加载的实现方法
Sep 29 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
Oct 20 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
May 12 Javascript
利用js-cookie实现前端设置缓存数据定时失效
Jun 18 Javascript
localstorage实现带过期时间的缓存功能
Jun 28 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 和 HTML
2006/10/09 PHP
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
2009/03/03 PHP
PHP检测字符串是否为UTF8编码的常用方法
2014/11/21 PHP
功能强大的php文件上传类
2016/08/29 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
JavaScript 全角转半角部分
2009/10/28 Javascript
jQuery Tips 为AJAX回调函数传递额外参数的方法
2010/12/28 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
复制网页内容,粘贴之后自动加上网址的实现方法(脚本之家特别整理)
2014/10/16 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
jQuery获取select选中的option的value值实现方法
2016/08/29 Javascript
Vue.js开发环境搭建
2016/11/10 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
jQuery实现的回车触发按钮事件功能示例
2018/03/25 jQuery
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
Python 爬虫图片简单实现
2017/06/01 Python
Python饼状图的绘制实例
2019/01/15 Python
Python3.5装饰器典型案例分析
2019/04/30 Python
python multiprocessing多进程变量共享与加锁的实现
2019/10/02 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
Django ModelForm操作及验证方式
2020/03/30 Python
Python内置异常类型全面汇总
2020/05/28 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
初中生自我评价
2014/02/01 职场文书
《陋室铭》教学反思
2014/02/26 职场文书
车队安全员岗位职责
2015/02/15 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
Springboot如何同时装配两个相同类型数据库
2021/11/17 Java/Android