一、Set的基本使用

在ES6之前,我们存储数据的结构主要有两种:数组、对象。

  • 在ES6中新增了另外两种数据结构:Set、Map,以及它们的另外形式WeakSet、WeakMap。

Set是一个新增的数据结构,可以用来保存数据,类似于数组,但是和数组的区别是元素不能重复。

  • 创建Set我们需要通过Set构造函数(暂时没有字面量创建的方式):

我们可以发现Set中存放的元素是不会重复的,那么Set有一个非常常用的功能就是给数组去重

Set的常见方法:

Set常见的属性:

  • size:返回Set中元素的个数;

Set常用的方法:

  • add(value):添加某个元素,返回Set对象本身;

  • delete(value):从set中删除和这个值相等的元素,返回boolean类型;

  • has(value):判断set中是否存在某个元素,返回boolean类型;

  • clear():清空set中所有的元素,没有返回值;

  • forEach(callback, [, thisArg]):通过forEach遍历set;

  • 另外Set是支持for of的遍历的

二、WeakSet使用

和Set类似的另外一个数据结构称之为WeakSet,也是内部元素不能重复的数据结构。

那么和Set有什么区别呢?

  • 区别一:WeakSet中只能存放对象类型,不能存放基本数据类型;
  • 区别二:WeakSet对元素的引用是弱引用,如果没有其他引用对某个对象进行引用,那么GC(垃圾回收器)可以对该对象进行回收;

    WeakSet常见的方法:
  • add(value):添加某个元素,返回WeakSet对象本身;
  • delete(value):从WeakSet中删除和这个值相等的元素,返回boolean类型;
  • has(value):判断WeakSet中是否存在某个元素,返回boolean类型;

WeakSet的应用

注意:WeakSet不能遍历

  • 因为WeakSet只是对对象的弱引用,如果我们遍历获取到其中的元素,那么有可能造成对象不能正常的销毁。
  • 所以存储到WeakSet中的对象是没办法获取的

那么这个东西有什么用呢?

三、Map的基本使用

另外一个新增的数据结构是Map,用于存储映射关系。 但是我们可能会想,在之前我们可以使用对象来存储映射关系,他们有什么区别呢?

  • 事实上我们对象存储映射关系只能用字符串(ES6新增了Symbol)作为属性名(key);

  • 某些情况下我们可能希望通过其他类型作为key,比如对象,这个时候会自动将对象转成字符串来作为key;

那么我们就可以使用Map:

Map的常用方法

Map常见的属性:

  • size:返回Map中元素的个数;

Map常见的方法:

  • set(key, value):在Map中添加key、value,并且返回整个Map对象;
  • get(key):根据key获取Map中的value;
  • has(key):判断是否包括某一个key,返回Boolean类型;
  • delete(key):根据key删除一个键值对,返回Boolean类型;
  • clear():清空所有的元素;
  • forEach(callback, [, thisArg]):通过forEach遍历Map;
  • Map也可以通过for of进行遍历。

四、WeakMap的使用

和Map类型相似的另外一个数据结构称之为WeakMap,也是以键值对的形式存在的。

那么和Map有什么区别呢?

  • 区别一:WeakMap的key只能使用对象,不接受其他的类型作为key

  • 区别二:WeakMap的key对对象的引用是弱引用,如果没有其他引用引用这个对象,那么GC可以回收该对象;

WeakMap常见的方法有四个:

  • set(key, value):在Map中添加key、value,并且返回整个Map对象;
  • get(key):根据key获取Map中的value;
  • has(key):判断是否包括某一个key,返回Boolean类型;
  • delete(key):根据key删除一个键值对,返回Boolean类型;

WeakMap的应用

注意:WeakMap也是不能遍历的

  • 因为没有forEach方法,也不支持通过for of的方式进行遍历;那么我们的WeakMap有什么作用呢?

ES6(三)——Set、WeakSet、Map、WeakMap相关推荐

  1. ES6 (十三)Set 和 Map 数据结构、WeakSet 和 WeakMap、WeakRef、FinalizationRegistry

    ES6 (十三)Set 和 Map 数据结构.WeakSet 和 WeakMap.WeakRef.FinalizationRegistry 文章目录 ES6 (十三)Set 和 Map 数据结构.We ...

  2. Set、Map、和WeakSet、WeakMap

    文章目录 集合(Set) Set 实例属性 constructor size Set 实例方法 操作方法 遍历方法 WeakSet 字典 Map Map 的属性 constructor size 操作 ...

  3. php 数据类型 map,es6中Set和Map的对比介绍(附代码)

    本篇文章给大家带来的内容是关于es6中Set和Map的对比介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Set 1.add()方法和size属性{ let list ...

  4. es6 三点运算符_基于es6三点运算符的使用方法(实例讲解)

    先看一个es6规范下三点运算符的使用实例: let fun=function(a,...list){ console.log(a,list); }; fun('0','a','b','c');//0 ...

  5. (...)ES6三点扩展运算符

    来源:https://www.cnblogs.com/rlann/p/7222150.html (...)ES6三点扩展运算符 扩展运算符将一个数组转为用逗号分隔的参数序列 console.log(. ...

  6. ES6数据结构Set和Map的区别

    参考1:https://www.cnblogs.com/lilife/p/13797853.html 参考2:https://es6.ruanyifeng.com/#docs/set-map set ...

  7. ES6:Set和Map

    Set Set:类似数组,但是成员的值都是唯一的,没有重复. Set本身是一个构造函数,用来生成Set数据结构. 他包含的方法: add: 添加某个值,返回Set结构本身. delete: 删除某个值 ...

  8. ES6(三)数组的扩展

    1.Array.form ES6中,Array.from = function(items,mapfn,thisArg) {  }   Array.from 用于将 类数组 和 可遍历对象(实现了It ...

  9. ES6系列之Set Map

    Set ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. const s = new Set();[2 ...

  10. ES6——Set和WeakSet

    ES6 提供了新的数据结构 Set. 它有七个常用方法: 检查元素是否存在 has(element) 添加元素 add(element) 移除元素 delete(element) 清空集合 clear ...

最新文章

  1. Centos下 安装和测试kafka
  2. php用什么电脑,我要学php了买一台什么配置的电脑最好?
  3. 妙用Python内置函数int()快速计算等比数列前n项和
  4. 【面经】关于逻辑回归,面试官们都怎么问
  5. 计算机操作系统笔记(二)
  6. mysql的data文件夹的位置以及作用
  7. Minitab控制图Xbar-R中认为数据异常的八项检验(8个异常趋势图)
  8. 854计算机专业基础,2020年哈工大考研《854计算机基础》考试大纲
  9. 第三章 硅谷宠儿 Friendster (二)
  10. 如何下载网页上的音频文件
  11. 二维otsu算法python_OpenCV-Python系列之OTSU算法
  12. 项目管理、Bug管理软件工具:禅道,BugFree,Redmine
  13. 算法精解----11、开地址哈希表
  14. 石溪分校 计算机研究生专业,纽约州立石溪分校 - 985本科申请纽约州立大学石溪分校计算机研究生容易吗?要准备什么?还有如果成功了好毕业吗??...
  15. 二元置信椭圆r语言_R语言 第4章 初级绘图(6)
  16. div+css静态网页设计web网页设计实例作业 ——中国风的茶文化(4页) web课程设计-HTML网页制作代码
  17. CDATA标签的用法
  18. 反射机制-Reflected
  19. 基于(springmvc+tomcat+JavaScript)的化妆品商城系统
  20. 巡风xunfeng代码研究---新建Flask项目模板

热门文章

  1. kafka tool 查看指定group下topic的堆积数量_ELK架构下利用Kafka Group实现Logstash的高可用...
  2. design php 如何使用ant_Ant Design Pro初探—添加面包屑
  3. Python实现GitBook工具
  4. 两种解除禁止右键、选中、复制的方法
  5. 大学c语言程序设计大赛,关于举办宁夏大学第二届C语言程序设计大赛的通知
  6. 选购四轴飞行器的部件
  7. xcode10 自定义代码块
  8. Web框架 Bottle 、Flask 、Tornado
  9. 外网访问FTP服务,解决只能以POST模式访问Filezilla的问题
  10. mysql中ibatis的limit动态传参