IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

js数组去重

WEB前端开发 2010-08-03 23:53:32 累计浏览 2,489 次
本机暂存

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. translateZ() (2026-06-25 21:18:56)
  2. translateY() (2026-06-25 21:17:56)
  3. translateX() (2026-06-25 21:16:01)

查看更多 前端 文章 →

建议继续学习

  1. JQuery实现Excel表格呈现 (累计阅读 48,350)
  2. 深入理解Javascript之执行上下文(Execution Context) (累计阅读 18,404)
  3. 从输入 URL 到页面加载完成的过程中都发生了什么事情? (累计阅读 15,933)
  4. 图片动态局部毛玻璃模糊效果的实现 (累计阅读 14,849)
  5. 天朝第二代身份证号码的验证机制 (累计阅读 14,763)
  6. HTML 5 的data-* 自定义属性 (累计阅读 14,349)
  7. 分享一个JQUERY颜色选择插件 (累计阅读 14,223)
  8. 什么是全栈工程师? (累计阅读 14,038)
  9. 快速排序(Quicksort)的Javascript实现 (累计阅读 11,735)
  10. 7 天打造前端性能监控系统 (累计阅读 11,188)