ES6(三)——Set、WeakSet、Map、WeakMap
一、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相关推荐
- ES6 (十三)Set 和 Map 数据结构、WeakSet 和 WeakMap、WeakRef、FinalizationRegistry
ES6 (十三)Set 和 Map 数据结构.WeakSet 和 WeakMap.WeakRef.FinalizationRegistry 文章目录 ES6 (十三)Set 和 Map 数据结构.We ...
- Set、Map、和WeakSet、WeakMap
文章目录 集合(Set) Set 实例属性 constructor size Set 实例方法 操作方法 遍历方法 WeakSet 字典 Map Map 的属性 constructor size 操作 ...
- php 数据类型 map,es6中Set和Map的对比介绍(附代码)
本篇文章给大家带来的内容是关于es6中Set和Map的对比介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Set 1.add()方法和size属性{ let list ...
- es6 三点运算符_基于es6三点运算符的使用方法(实例讲解)
先看一个es6规范下三点运算符的使用实例: let fun=function(a,...list){ console.log(a,list); }; fun('0','a','b','c');//0 ...
- (...)ES6三点扩展运算符
来源:https://www.cnblogs.com/rlann/p/7222150.html (...)ES6三点扩展运算符 扩展运算符将一个数组转为用逗号分隔的参数序列 console.log(. ...
- ES6数据结构Set和Map的区别
参考1:https://www.cnblogs.com/lilife/p/13797853.html 参考2:https://es6.ruanyifeng.com/#docs/set-map set ...
- ES6:Set和Map
Set Set:类似数组,但是成员的值都是唯一的,没有重复. Set本身是一个构造函数,用来生成Set数据结构. 他包含的方法: add: 添加某个值,返回Set结构本身. delete: 删除某个值 ...
- ES6(三)数组的扩展
1.Array.form ES6中,Array.from = function(items,mapfn,thisArg) { } Array.from 用于将 类数组 和 可遍历对象(实现了It ...
- ES6系列之Set Map
Set ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. const s = new Set();[2 ...
- ES6——Set和WeakSet
ES6 提供了新的数据结构 Set. 它有七个常用方法: 检查元素是否存在 has(element) 添加元素 add(element) 移除元素 delete(element) 清空集合 clear ...
最新文章
- Centos下 安装和测试kafka
- php用什么电脑,我要学php了买一台什么配置的电脑最好?
- 妙用Python内置函数int()快速计算等比数列前n项和
- 【面经】关于逻辑回归,面试官们都怎么问
- 计算机操作系统笔记(二)
- mysql的data文件夹的位置以及作用
- Minitab控制图Xbar-R中认为数据异常的八项检验(8个异常趋势图)
- 854计算机专业基础,2020年哈工大考研《854计算机基础》考试大纲
- 第三章 硅谷宠儿 Friendster (二)
- 如何下载网页上的音频文件
- 二维otsu算法python_OpenCV-Python系列之OTSU算法
- 项目管理、Bug管理软件工具:禅道,BugFree,Redmine
- 算法精解----11、开地址哈希表
- 石溪分校 计算机研究生专业,纽约州立石溪分校 - 985本科申请纽约州立大学石溪分校计算机研究生容易吗?要准备什么?还有如果成功了好毕业吗??...
- 二元置信椭圆r语言_R语言 第4章 初级绘图(6)
- div+css静态网页设计web网页设计实例作业 ——中国风的茶文化(4页) web课程设计-HTML网页制作代码
- CDATA标签的用法
- 反射机制-Reflected
- 基于(springmvc+tomcat+JavaScript)的化妆品商城系统
- 巡风xunfeng代码研究---新建Flask项目模板
热门文章
- kafka tool 查看指定group下topic的堆积数量_ELK架构下利用Kafka Group实现Logstash的高可用...
- design php 如何使用ant_Ant Design Pro初探—添加面包屑
- Python实现GitBook工具
- 两种解除禁止右键、选中、复制的方法
- 大学c语言程序设计大赛,关于举办宁夏大学第二届C语言程序设计大赛的通知
- 选购四轴飞行器的部件
- xcode10 自定义代码块
- Web框架 Bottle 、Flask 、Tornado
- 外网访问FTP服务,解决只能以POST模式访问Filezilla的问题
- mysql中ibatis的limit动态传参