您现在的位置:首页 --> JavaScript --> js数组去重
js数组去重
浏览:2407次 出处信息
js数组去重就是把数组中重复的元素去掉:
01 |
Array.prototype.delRepeat=function(){ |
02 |
var newArray=new Array(); |
03 |
var len=this.length; |
04 |
for (var i=0;i<len ;i++){ |
05 |
for(var j=i+1;j<len;j++){ |
06 |
if(this[i]===this[j]){ |
07 |
j=++i; |
08 |
} |
09 |
} |
10 |
newArray.push(this[i]); |
11 |
} |
12 |
return newArray; |
13 |
} |
但是很明显这里有for循环内嵌了另一个for循环,在大数据量下肯定非常耗时!效率低下!经过查找和高人指点优化了一个新方法:
01 |
Array.prototype.delRepeat=function(){ |
02 |
var newArray=[]; |
03 |
var provisionalTable = {}; |
04 |
for (var i = 0, item; (item= this[i]) != null; i++) { |
05 |
if (!provisionalTable[item]) { |
06 |
newArray.push(item); |
07 |
provisionalTable[item] = true; |
08 |
} |
09 |
} |
10 |
return newArray; |
11 |
} |
就是使用一个临时的provisionalTable对象,将数组的值作为provisionalTable对象的键值,如果相应的值不存在就将这个数组的值push到新数组中。
效率是提高了,但是有个bug,就是假设数组中换用可转换的数字和字符串,比如数组[6,"6"]这时候就好被去掉一个。悲剧,同时求解决方法。
建议继续学习:
- 为什么数组标号是从0开始的? (阅读:5826)
- C语言结构体里的成员数组和指针 (阅读:5722)
- 将数组定义为常量 (阅读:5254)
- Tips of Linux C programming (阅读:4766)
- xml转数组的方法 (阅读:4279)
- javascript扩展Array(数组)类 (阅读:3854)
- 动态数组的 C 实现 (阅读:3746)
- php数组排序 (阅读:3748)
- 一个 VLA (可变长度数组)的实现 (阅读:3747)
- javascript数组排序的问题 (阅读:3563)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
文章信息
- 作者:愚人码头 来源: WEB前端开发
- 标签: 去重 数组
- 发布时间:2010-08-03 23:53:32
建议继续学习
近3天十大热文
-
[902] WordPress插件开发 -- 在插件使用 -
[135] 解决 nginx 反向代理网页首尾出现神秘字 -
[56] 整理了一份招PHP高级工程师的面试题 -
[55] Innodb分表太多或者表分区太多,会导致内 -
[53] 如何保证一个程序在单台服务器上只有唯一实例( -
[52] CloudSMS:免费匿名的云短信 -
[52] 海量小文件存储 -
[52] 全站换域名时利用nginx和javascri -
[51] 用 Jquery 模拟 select -
[50] 分享一个JQUERY颜色选择插件
