两种常用的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 相关文章推荐
14个有用的Jquery技巧分享
Jan 08 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
Mar 03 Javascript
浅谈JS运算符&amp;&amp;和|| 及其优先级
Aug 10 Javascript
js获取form表单所有数据的简单方法
Aug 18 Javascript
JavaScript 链式结构序列化详解
Sep 30 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
Oct 18 Javascript
Vue.js第四天学习笔记
Dec 02 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
Jan 09 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
Sep 02 Javascript
vue-cli项目使用mock数据的方法(借助express)
Apr 15 Javascript
javascript canvas API内容整理
Feb 16 Javascript
JavaScript 判断浏览器是否是IE
Feb 19 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下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
一些php项目中比较通用的php自建函数的详解
2013/06/06 PHP
php function用法如何递归及return和echo区别
2014/03/07 PHP
浅析PHP程序设计中的MVC编程思想
2014/07/28 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
PHP session垃圾回收机制实例分析
2019/06/28 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
jquery控制listbox中项的移动并排序
2009/11/12 Javascript
jQuery学习笔记 获取jQuery对象
2012/09/19 Javascript
Vue的土著指令和自定义指令实例详解
2018/02/04 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
微信小程序实现留言板
2018/10/31 Javascript
详解原生JS动态添加和删除类
2019/03/26 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
Element InputNumber计数器的使用方法
2020/07/27 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
Ant Design Pro 之 ProTable使用操作
2020/10/31 Javascript
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
Python字符串替换实例分析
2015/05/11 Python
Python内置函数delattr的具体用法
2017/11/23 Python
ubuntu安装sublime3并配置python3环境的方法
2018/03/15 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
django ajax发送post请求的两种方法
2020/01/05 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
2020/04/22 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
用python批量移动文件
2021/01/14 Python
Zavvi美国:英国娱乐之家
2017/03/19 全球购物
Hertz荷兰:荷兰和全球租车
2018/01/07 全球购物
MSC邮轮官方网站:加勒比海、地中海和世界各地的假期
2018/08/27 全球购物
MADE法国:提供原创设计师家具
2018/09/18 全球购物
波兰最早的运动鞋精品店之一:Street Supply
2019/08/29 全球购物
中专自我鉴定
2014/02/05 职场文书
师德师风事迹材料
2014/12/20 职场文书
学校清洁工岗位职责
2015/04/15 职场文书
教你如何用Python实现人脸识别(含源代码)
2021/06/23 Python