数组去重方法总结
2016-05-05 10:10
309 查看
网上数组去重的方法很多,这里做下总结,便于日后复习。
方法一:
先创建一个空数组(result),用来保存最终的结果;
创建标记(isRepeat),用于判断是否存在重复项;
循环原数组(arr)中的每个元素;
再对(result)中的每个元素进行二次循环,判断是否有与之相同的元素。如果有,把标记(isRepeat)设置为true,并跳出循环;
根据标记(isRepeat)判断是否向数组(result)中添加元素;
返回这个新数组(result)。
注:由于需要多次重复循环比较,此方法的执行效率较低,下面是第二种方法。
方法二:引用类似hash表的思想
测试:
方法一:
先创建一个空数组(result),用来保存最终的结果;
创建标记(isRepeat),用于判断是否存在重复项;
循环原数组(arr)中的每个元素;
再对(result)中的每个元素进行二次循环,判断是否有与之相同的元素。如果有,把标记(isRepeat)设置为true,并跳出循环;
根据标记(isRepeat)判断是否向数组(result)中添加元素;
返回这个新数组(result)。
// 数组去重-方法一 function removeRepeat01(arr){ var result =[], isRepeat, len_arr = arr.length; for(var i=0; i < len_arr; i++){ isRepeat = false; for(var j=0; j < result.length; j++){ if(arr[i] === result[j]){ //这里用'===' isRepeat = true; break; } } if(!isRepeat){ result.push(arr[i]); } } return result; }
注:由于需要多次重复循环比较,此方法的执行效率较低,下面是第二种方法。
方法二:引用类似hash表的思想
//数组去重方法二 function removeRepeat02(arr) { var hash = {}, len = arr.length, str_mark = '', result = []; for (var i = 0; i < len; i++){ //判断数组中是否存在字符串 if(typeof arr[i]=='string'){ str_mark = '_isStr'; }else { str_mark = ''; } //去重 if (!hash[arr[i] + str_mark]){ hash[arr[i] + str_mark] = true; result.push(arr[i]); } } return result; }
测试:
var aArr = [1,2,'222',222,3,4,5,5,5,6,6,7,8]; console.log(removeRepeat01(aArr)); console.log(removeRepeat02(aArr));
相关文章推荐
- rac ORA-00245 报错
- 28岁papi酱正在过时 00后网红的实用战争
- Android Studio 导出APK
- KairosDB 监控系统介绍
- MySQL 数据库 varchar 到底可以存多少个汉字,多少个英文呢?我们来搞搞清楚
- 4月国内操作系统份额:Win 7份额52% 霸主地位巩固
- Mybatis与Ibatis的区别
- 四大主流开源BI商业智能平台对比评测
- Linux死锁调试之hardlockup
- ios开发笔记-设置带图片的button的圆角在AL下失效
- Zookeeper分布式集群安装教程
- LeetCode OJ 106. Construct Binary Tree from Inorder and Postorder Traversal
- Zclip点击复制内容到剪贴板兼容各浏览器
- 如何把.cs文件编译成DLL文件
- Bootstrap每天必学之导航条
- 视频为Activity背景
- 深入分析Parquet列式存储格式
- 第三届河南省acm省赛 聪明的kk
- 通哥运维笔记之Linux下安装JDK
- struts.xml配置文件详解