Javascript中的数组去重问题
来源:互联网 发布:三维平面布置图软件 编辑:程序博客网 时间:2024/06/05 16:17
在论坛上看到了有关于数组去重的问题,思考了一下相出了第一种方法
var arr=[1,2,3,4,5,1,2,3,4,6,7];var newArr=[];for(var i=0;i<arr.length;i++){//通过indexof方法检索arr中的值,indexof方法在不到相同的值时会返回-1 if(newArr.indexof(arr[i])==-1){ newArr.push(arr[i]); }} //将方法抽象function getNewArr(a){ var newArr=[]; for(var i=0;i<a.length;i++){ if(newArr.indexOf(a[i])==-1){ newArr.push(a[i]); } } return newArr;}var arr=[1,2,3,4,5,1,2,3,4,6,7];getNewArr(arr);
后来朋友告诉我可以用哈希表做,我还特意去百度了哈希表是个什么东西;得到了下面的代码
function getNewArr(a){ var newArr={}; var result=[]; var len=a.length; for(var i=0;i<len;i++){ if(!newArr[a[i]]){ newArr[a[i]]=true; result.push(a[i]); } } return result;}var arr=[1,2,3,4,3,2,5];console.log(getNewArr(arr))//1,2,3,4,5;
- 开始 i=0;a[i]=1 newArr={} result=[] newArr[a[i]]是不存在的,所以!newArr[a[i]]会走if中间的代码;
- 然后i=1;a[i]=2 newArr={1:true} result=[1] newArr[2]也是不存在的,所以 也会走if的代码,
- 直到i=4;a[i]=3newArr={1:true,2:true,3:true,4:true},newArr[3]=true;这个值存在了,就不会走if中的代码,所以第二个3就被忽略了得到的result就是[1:true,2:true,3:true,4:true]所以可以达到去掉重复数组的效果;
实不相瞒,ES6给出了一个更简单的方法;使用 Set 以及 Array.from 方法去重,实测只要一行代码
function unique(a) { return Array.from(new Set(a));}
Set()方法是一组key值的集合,他并不会存储value值,当你的key值重复了他就自动帮你过滤了,可以达到数组去重
阅读全文
0 0
- Javascript中的数组去重问题
- javascript数组去重问题
- javascript数组去重
- javascript 数组去重
- javascript 数组去重
- 数组去重javascript
- javascript数组去重
- JavaScript数组去重
- JavaScript数组去重
- javascript数组去重
- JavaScript 数组去重
- javascript数组去重
- JavaScript 数组去重
- javascript 数组去重
- javascript数组去重
- JavaScript数组去重
- javascript 数组去重
- JavaScript数组去重
- json之查看过去的消息
- 数位dp模板
- oracle 高级查询(一)
- 一个.java源文件是否可以包括多个类?有什么限制?
- POJ 3278
- Javascript中的数组去重问题
- 51Nod-1027-大数乘法
- Uva Mining Your Own Business(点双连通分量)
- 目前主流应用服务器的区别与分析
- Structuring Your TensorFlow Models-翻译与学习
- HDU 4300 Clairewd’s message(扩展KMP)
- 【Java】成员变量、类变量、局部变量的区别
- 学好Java思想
- SpringMVC 参数校验