技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> JavaScript --> js数组去重

js数组去重

浏览:2227次  出处信息

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"]这时候就好被去掉一个。悲剧,同时求解决方法。

建议继续学习:

  1. 为什么数组标号是从0开始的?    (阅读:5053)
  2. C语言结构体里的成员数组和指针    (阅读:4975)
  3. 将数组定义为常量    (阅读:4630)
  4. Tips of Linux C programming    (阅读:4068)
  5. xml转数组的方法    (阅读:3594)
  6. javascript扩展Array(数组)类    (阅读:3298)
  7. 动态数组的 C 实现    (阅读:3171)
  8. php数组排序    (阅读:3072)
  9. javascript数组排序的问题    (阅读:3007)
  10. 关于Cannot use a scalar value as an array的解决办法    (阅读:2939)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1