两种常用的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 相关文章推荐
用js计算页面执行时间的函数
Dec 07 Javascript
关于JavaScript中的关联数组分析
Apr 09 Javascript
Firefox和IE兼容性问题及解决方法总结
Oct 08 Javascript
ExtJs纵坐标值重复问题的解决方法
Feb 27 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
Mar 14 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
Aug 21 Javascript
关于List.ToArray()方法的效率测试
Sep 30 Javascript
如何利用模板将HTML从JavaScript中抽离
Oct 08 Javascript
详解webpack+vue-cli项目打包技巧
Jun 17 Javascript
Vue使用NPM方式搭建项目
Oct 25 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
Jan 20 Javascript
解决vue中的无限循环问题
Jul 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
php报错502badgateway解决方法
2019/10/11 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
jquery简单的弹出层浮动层代码
2015/04/27 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
2017/08/15 jQuery
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
js 递归json树实现根据子id查父id的方法分析
2019/11/08 Javascript
JavaScript设计模式---单例模式详解【四种基本形式】
2020/05/16 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
python科学计算之narray对象用法
2019/11/25 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
2020/01/19 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
pycharm 复制代码出现空格的解决方式
2021/01/15 Python
浅析两列自适应布局的3种思路
2016/05/03 HTML / CSS
CSS3教程(7):CSS3嵌入字体
2009/04/02 HTML / CSS
Julep官网:美容产品和指甲油
2017/02/25 全球购物
建筑横幅标语
2014/10/09 职场文书
公司员工违纪检讨书
2015/05/05 职场文书
送给火锅店的创意营销方案!
2019/07/08 职场文书
Python Django获取URL中的数据详解
2021/11/01 Python
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python