高效率去掉js数组中重复项
2016-03-16 16:27
495 查看
引用自:http://www.cnblogs.com/sosoft/archive/2013/12/08/3463830.html
Array类型并没有提供去重复的方法,如果要把数组的重复元素干掉,那得自己想办法:
总体思路是把数组元素逐个搬运到另一个数组,搬运的过程中检查这个元素是否有重复,如果有就直接丢掉。从嵌套循环就可以看出,这种方法 效率极低。我们可以 用一个hashtable的结构记录已有的元素,这样就可以避免内层循环。恰好,在Javascript中实现hashtable是极为简单的,改进如 下:
Array类型并没有提供去重复的方法,如果要把数组的重复元素干掉,那得自己想办法:
1 function unique(arr) { 2 var result = [], isRepeated; 3 for (var i = 0, len = arr.length; i < len; i++) { 4 isRepeated = false; 5 for (var j = 0, len = result.length; j < len; j++) { 6 if (arr[i] == result[j]) { 7 isRepeated = true; 8 break; 9 } 10 } 11 if (!isRepeated) { 12 result.push(arr[i]); 13 } 14 } 15 return result; 16 }
总体思路是把数组元素逐个搬运到另一个数组,搬运的过程中检查这个元素是否有重复,如果有就直接丢掉。从嵌套循环就可以看出,这种方法 效率极低。我们可以 用一个hashtable的结构记录已有的元素,这样就可以避免内层循环。恰好,在Javascript中实现hashtable是极为简单的,改进如 下:
function unique(arr) { var result = [], hash = {}; for (var i = 0, elem; (elem = arr[i]) != null; i++) { if (!hash[elem]) { result.push(elem); hash[elem] = true; } } return result; //http://www.cnblogs.com/sosoft/ }
相关文章推荐
- 盘点javascript 正则表达式中 中括号的【坑】
- javascript笔记——点击按钮(或超链接)如何跳转到另外一个页面并执行目标页面的js函数
- 运用Gulp压缩文件编译文件。包括css js html image
- ArcGIS API for JavaScript开发教程系列(三)之图层列表控件
- JS tab切换事件
- iScroll.js和Swiper.js联合使用时的插件冲突(滑动冲突)
- 教你用javascript实现随机标签云效果_附代码
- 使用dragdealer.js实现拖拉效果
- backbone.js / underscore.js / sea.js / html2js
- 浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
- JS 笔记(二) - 函数
- js获取当前地址的url
- 【json】json简单梳理
- js纯数字逐一停止显示效果的实现代码
- json处理第三篇:利用fastjson处理json
- JS 笔记(一)
- javascript Date format(js日期格式化)
- ArcGIS API for JavaScript开发教程系列(二)之地图控件
- JSTL笔记(胖先生版)
- JSON的使用:获取url地址内容添加至ListView控件中