关于js数组去重的方法有很多,我以前居然用的是嵌套两层for循环来加一层if来判断数组里面的重复数据,当我了解了es的方法之后,才发现我的方法是有多蠢(笑哭)。
首先关于数组去重我们先简单介绍一下es6新增的一个Map对象。

Map对象

Map是一组键值对的结构,具有极快的查找速度,我们通过键名就可以快速找到值。

Map对象的常用方法

 const res=new Map()//通过set方法来设置键值对存储数据res.set("a",1)res.set("a",2)//这样子会覆盖上面的值//通过get方法来根据键名获取对应的值res.get("a")//输出2//通过has方法来判断是否存在键名res.has("a")//输出trueres.has("b")//输出false,没有设置过键名为b的数据

我们采用Map对象来对数组去重要用到set和has方法

通过filter和Map来对数组进行去重

   const map=new Map();const arry=[1,2,1,"1","2","1"];let res= arry.filter(item=>!map.has(item)&&map.set(item,1))console.log(res);

这样就可以达到数组去重的效果

es6通过Map对象对数组去重相关推荐

  1. javascript ES6有趣的Set,数组去重、并集、交集、差集

    Set 对象存储的值总是唯一的 Set 对象方法 方法 描述 add 添加某个值,返回Set对象本身. clear 删除所有的键/值对,没有返回值. delete 删除某个键,返回true.如果删除失 ...

  2. js 去重某个键值 数组对象_JS数组去重常见方法分析

    数组去重是开发中经常会遇到的问题,也是面试时经常会考到的.JS实现数组去重可以有多种方法: 一.简单的去重方法 用一个类比来简单解释一下这种去重方法的思路:A篮子里有若干个不同颜色和大小的球,旁边放一 ...

  3. ES6使用Set方法进行数组去重

    在ES6中可以使用Set方法进行数组去重: let arr = [1,1,1,2,2,3,3,3,4,4]let set = new Set(arr)console.log(set); 输出结果:Se ...

  4. JS案例——找出两个数组中的不同元素或对象、数组去重

    一.找出两个数组中的不同元素或对象 1. 数据 var arr1 = ["张瑞淑", "徐海涛", "谢岗岗", "薛鹏" ...

  5. ES6中Set方法实现数组去重

    关于Set的定义: Set : 使用构造函数定义一个set类型,构造函数是一个数组:set类型里面的元素不允许重复.可以用于数组去重. 举例:对一个含有多种数据类型的数组进行去重 let arr =  ...

  6. js 去重某个键值 数组对象_js数组去重(包括对象数组去重)

    2019.08.02补: 对象数组建议直接循环然后使用工具库(lodash)的深比较,评论里也有指出,文章的方法有些取巧了 生产环境不要这么玩~. 方法一:利用ES6的Array.from()/扩展运 ...

  7. ES6字符串、对象、数组不常见但实用的API方法

    目录 1.字符串 1.1 at()方法 1.2 includes()方法 1.3 repeat() 1.4 padStart() .padEnd() 2.数组 2.1 Array.from() 2.2 ...

  8. 算法:对象方式数组去重

    var arr = [3, 1, 1, 4 , 2 , 4 , 2 , 4 , 2, 1, 1, 3, 3, 3];var ary=[];var obj={};for(var i=0;i<arr ...

  9. es6怎么将对象转换为数组

    var obj={name:"wz",age:"12",sex:"女"}console.log(Object.values(obj))var ...

最新文章

  1. linux下occi操作oracle数据库,中文乱码的问题
  2. 接口转发和重定向区别(一)
  3. go defer 语句会延迟函数的执行直到上层函数返回。
  4. 简述生成式对抗网络 GAN
  5. 监控 DNS 流量,预防安全隐患五大招!
  6. UVa10340 - All in All
  7. [Giveaway] 来自AnyBizSoft、4Media、EASEUS的限时免费软件
  8. Android Studio 上传aar(Library)到JCenter
  9. [Codeforces1148C]Crazy Diamond——构造
  10. 高性能diffpatch算法 -- 如何将微信Apk的官方增量包20.4M缩小到7.0M
  11. 关于getc与fgetc和getchar的本质区别
  12. Linux——MySQL-MMM
  13. 服务器内存不够了?看这里!
  14. 关于video++,jsrun,有道笔记等的感想
  15. linux sed 替换符号,linux sed 批量替换文件中的字符串或符号
  16. react项目中解决IE浏览器下报Promise未定义的错误
  17. Java核心技术【卷一】——学习笔记(五)--泛型(一)
  18. python CAD图形合并
  19. Guitar Pro8中文版打谱编曲软件
  20. 计算机专业学生宿舍用台式,大学宿舍限电可以用台式机吗 大学宿舍用台式机跳闸怎么办...

热门文章

  1. 安装Windows11需要满足哪些要求
  2. 用libpcap分析CAIDA的网络流量文件的猝发性
  3. python科学计算是什么意思_Python科学计算和数据分析(NumPy详细介绍)
  4. 闭环系统的零极点图判定稳定性_系统的稳定性判别
  5. 机房集中监控中KVM的五大设计原则是哪些?
  6. 【洛谷】P1462 通往奥格瑞玛的道路
  7. mavens使用阿里云国内私服下载
  8. 单相交流调压电路matlab仿真,单相斩控式交流调压电路
  9. 小飞升值记——(23)
  10. 啊哈C——学习3.4一起来找茬