阮大神的es6看了一遍,但是对于Set和Map还是一知半解的,主要还是没怎么用吧,这里总结一下,以后再工作中也要多用用才行

怎么定义set呢?有什么用处?

set是ES6中新增的类型,和数组类似,唯一不同在于该类型不会有重复的数据,一般常用来对数据进行去重操作。

//创建实例
let set = new Set() //{}
let set = new Set([1,2,3]) //{1,2,3} //相关方法
set.has(1) //判断元素是否存在
set.add('1') //添加元素
set.delete(1) //删除元素
set.clear() //清除元素

知道了怎么定义,怎么创建实例,但是set这个数据结构怎么用来去重的?来看一看

//数组去重
let set = new Set([1,2,2,3,3])
console.log(set) //{1,2,3} //多数组合并去重
let arr1 = [1,2,66,5,3]
let arr2 = [1,56,5,4]
let set = new dSet([...arr1,...arr2])
console.log(set) //{1,2,66,5,3,56,4}

想必大家都注意到啦,我们去重后的数据结构不是用[]括起来的数组啊,所以来看一下怎么实现Set和Array之间的转换

说道Array转Set,上面的实例不就是将数组转成了Set嘛

那么Set转Array呢,怎么实现? 其实很简单,有两种方式

//使用拓展运算符
let set = new Set([1,2,3])
console.log([...set]) // [1,2,3] //使用Array.from()
console.log(Array.from(set)) // [1,2,3

Set类型的数据,也可以像数组一样做 循环遍历

可以使用Set实例对象的keys(),values(),entries()方法进行遍历。

由于Set的键名和键值是同一个值,它的每一个元素的key和value是相同的,所有keys()和values()的返回值是相同的,entries()返回的元素中的key和value是相同的。

这里引用一位道友的代码  ES6,新增数据结构Set的用法

let set5 = new Set([4, 5, 'hello'])
console.log('iterate useing Set.keys()')
for(let item of set5.keys()) {
console.log(item) //4 5 hello
} console.log('iterate useing Set.values()')
for(let item of set5.values()) {
console.log(item) //4 5 hello
} console.log('iterate useing Set.entries()')
for(let item of set5.entries()) {
console.log(item) //[4,4] [5,5] ['hello' 'hello']
}

end

最新文章

  1. 基于SVN的项目管理——集中与分散
  2. TB6612FNG电机驱动模块的简单使用
  3. 时间戳 JavaScript parse() 方法 处理技巧
  4. 为什么C++中空类和空结构体大小为1?(转载)
  5. .NET/MVC-发布到IIS6.1提示未能加载程序集System.Web.Http.WebHost
  6. matlab练习程序(射线法判断点与多边形关系)
  7. append appendChild appendTo区别
  8. CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互
  9. NopCommerce架构分析之八------多语言
  10. Android-ViewPagerIndicator-master 、Android-PullToRefresh 学习篇
  11. UVA_11178_Morley's_Theorem_(计算几何基础)
  12. html img Src base64 图片显示
  13. vc中调用Com组件的方法详解
  14. 【Windows 8 Store App】学习二:ResourceLoader
  15. HDU 2444 The Accomodation of Students(二分图判定+最大匹配)
  16. selenium java maven自动化测试环境搭建
  17. ionic2中如何使用自动生成器
  18. wx小程序修改swiper 点的样式
  19. 解决IIS7下主机名灰色无法修改问题
  20. (原)ubuntu下cadvisor+influxdb+grafana+supervisord监控主机和docker的containers

热门文章

  1. SVM详细笔记及总结
  2. ajax 跨域问题处理
  3. 加上cdn后字体跨域
  4. Linux 命令之 crontab
  5. 获取本机出口IP方法
  6. 解决本地无法访问vm虚拟机上centos7服务器中已配置好的hugo站点的问题
  7. 大公司喜欢问的Java集合类面试题
  8. Java类、对象、变量、方法
  9. [考试反思]1109csp-s模拟测试106:撞词
  10. 赤壁情:dp