ES6——Set和WeakSet
ES6 提供了新的数据结构 Set。
它有七个常用方法:
- 检查元素是否存在 has(element)
- 添加元素 add(element)
- 移除元素 delete(element)
- 清空集合 clear()
- 遍历集合元素 forEach(fun)
- 返回一个迭代器对象 values()
- 返回一个元素是类似 [value, value] 形式的迭代器对象 entries()
一个常用属性:
- size 获取集合长度
Set 是一个构造函数,因此创建 Set 的方式就是通过 new 关键字创建。
语法:new Set([iterable]);
Set 可以传递一个可迭代对象(常用数组),它的所有元素将不重复地被添加到新的 Set 中。如果不指定此参数或其值为null,则会创建一个空集。
var set = new Set([1,2,3]);set.has(1); //true
set.has(4); //false
console.log(set.size); //3
set.add(4);
console.log(set.size); //4
set.delete(4); //true
console.log(set.size); //3
set.delete(5); //false
set.clear();
console.log(set.size); //0
values() 和 entries() 都会返回一个迭代器对象,不同的是里面的元素不一样。
var set = new Set([1,2,3]);var inter1 = set.entries();
var inter2 = set.values();console.log(inter1.next().value); //[1, 1]
console.log(inter2.next().value); //1
Set 的并集、交集以及差集的实现
并集语法:var union = new Set([...setA , ...setB]);
交集语法:var intersection = new Set([...setA].filter(element => setB.has(element)));
差集语法:var difference = new Set([...setA].filter(element => !setB.has(element)));
var setA = new Set([1,2,3]);
var setB = new Set([3,4,5]);var union = new Set([...setA , ...setB]);
console.log(union); //Set(5) {1,2,3,4,5}var intersection = new Set([...setA].filter(element => setB.has(element)));
console.log(intersection); //Set(1) {3}var difference = new Set([...setA].filter(element => !setB.has(element)));
console.log(difference); //Set(2) {1,2}
Set 和 WeakSet
WeakSet 也是一个构造函数,因此创建 WeakSet 的方式就是通过 new 关键字创建。
语法:new WeakSet([iterable]);
WeakSet 可以传递一个可迭代对象(常用数组),这个对象的元素必须是对象,它的所有元素将不重复地被添加到新的 WeakSet 中。如果不指定此参数或其值为null,则会创建一个空集。
WeakSet 结构与 Set 类似,也是不重复的值的集合。但是,它与 Set 有两个区别:
- 首先,WeakSet 的成员只能是对象,而不能是其他类型的值。
var weakSet = new WeakSet();weakSet.add(1); //报错
var weakSet1 = new WeakSet([[1,2],[3,4]]); //不报错
var weakSet2 = new WeakSet([1,2]); //报错,传入对象的元素必须是对象
- WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑 WeakSet 对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于 WeakSet 之中。
WeakSet 只有三个常用方法:
- 检查元素是否存在 has(element)
- 添加元素 add(element)
- 移除元素 delete(element)
var arr1 = [1,2];
var arr2 = [3,4];
var weakSet = new WeakSet([arr1,arr2]);weakSet.has([1,2]); //false
weakSet.has(arr1); //truevar arr3 = [5,6];
weakSet.add(arr3);
console.log(weakSet); //WeakSet {Array(2), Array(2), Array(2)}weakSet.delete(arr1); //true
console.log(weakSet); //WeakSet {Array(2), Array(2)}weakSet.delete([1,2]); //false
ES6——Set和WeakSet相关推荐
- es6之数据结构 set,WeakSet,mapWeakMap
{let list = new Set();list.add(1);list.add(2);list.add(1);console.log(list); //Set(2) {1, 2} let arr ...
- ES6(三)——Set、WeakSet、Map、WeakMap
一.Set的基本使用 在ES6之前,我们存储数据的结构主要有两种:数组.对象. 在ES6中新增了另外两种数据结构:Set.Map,以及它们的另外形式WeakSet.WeakMap. Set是一个新增的 ...
- set和map去重调用什么方法_你真的了解ES6的Set,WeakSet,Map和WeakMap吗?
之前在学习 ES6 的时候,看到 Set 和 Map,不知道其应用场景有哪些,只觉得很多时候会用在数组去重和数据存储,后来慢慢才领悟到 Set 是一种叫做集合的数据结构,Map 是一种叫做字典的数据结 ...
- 第十六节:ES6新增的 Set 和 WeakSet 是什么东西?
题外话:往后的章节,跟前面的章节联系越来越紧密,很多知识的讲解建立在前面章节的学习基础上,如果是新来的同学,建议从第一节学起.如果是忘记了前面的内容,前端君也会在适当的时候,加上跳转链接. 什么是Se ...
- es6 WeakSet
WeakSet 含义 WeakSet 结构与 Set 类似,也是不重复的值的集合.但是,它与 Set 有两个区别. 首先,WeakSet 的成员只能是对象,而不能是其他类型的值. const ws = ...
- es6 Map,Set 和 WeakMap,WeakSet
这些是新加的集合类型,提供了更加方便的获取属性值的方法,不用像以前一样用hasOwnProperty来检查某个属性是属于原型链上的呢还是当前对象的.同时,在进行属性值添加与获取时有专门的get,set ...
- ES6 (十三)Set 和 Map 数据结构、WeakSet 和 WeakMap、WeakRef、FinalizationRegistry
ES6 (十三)Set 和 Map 数据结构.WeakSet 和 WeakMap.WeakRef.FinalizationRegistry 文章目录 ES6 (十三)Set 和 Map 数据结构.We ...
- ES6 WeakSet数据结构 与Set十分相似
它与Set十分相似,对象的值也不能是重复的,与Set不同点: 1.WeakSet成员只能够是对象. 2.作为WeakSet成员的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用,也就是 ...
- Set、Map、和WeakSet、WeakMap
文章目录 集合(Set) Set 实例属性 constructor size Set 实例方法 操作方法 遍历方法 WeakSet 字典 Map Map 的属性 constructor size 操作 ...
最新文章
- 【全网最全的博客美化系列教程】06.推荐和反对炫酷样式的实现
- 【原】画流程图工具visio使用技巧汇总
- 除了清空购物车,阿里年会的技术也够霸气!
- 机器学习库一:scikit-learn
- 硬盘安装以及磁盘分区和检测(笔记本R7000)
- 深入掌握Linux操作系统,其实也没你想象那么难
- Java中的IO学习总结
- Button或者ImageButton的背景设为透明或者半透明
- Pytorch——激活函数(Activation Function)
- 《shell脚本学习指南》自学笔记——入门
- QT5.14.2+VS2019安装配置教程Windows
- 华为交换机eth口作用_华为网络交换机mode键作用 华为交换机这些接口的作用?...
- 阻止冒泡事件(兼容大部分浏览器)
- 给元素设置鼠标移入后变为手型的属性
- 通过 api 和 keycloak 理解OIDC认证
- Applied ADO.NET: Building Data-Driven Solutions
- 图片的修改时间就是拍摄时间(家庭相片管理工具之三)
- Java中的排序——高级用法
- 二建考生速看 拿到二级建造师证书后该如何进行注册?
- 28.找出字符串中第一个匹配项的下标