ES6 Set,WeakSet,Map,WeakMap

1. Set

Set是一个集合,里面的值都是唯一的,没有重复的。
Set中可以是任何数据类型,并且添加数据时会进行严格比较,重复数据无法加入。

2. WeakSet

弱引用Set。只能存储对象,不能存储其他类型。且只保持对其中对象的弱引用,若外部无对此对象的引用,或者对象被删除,则
WeakSet中将不再有此对象。

因为成员都是弱引用,随时可能消失,遍历不能保证成员的存在。所以 WeakSet 不能遍历

3. Map

Map是一个键值对。

Map与Object的区别是:

1. Object的key只能是String和Symbol类型,而Map的key可以是任何基本类型(String, Number, Boolean, undefined, NaN....)或对象类型(Map, Set, Object, Function , Symbol , null....)
2. Map有size属性,可以方便的获取Map的长度,但是Object无法直接获取长度

4. WeakMap

弱引用Map。WeakMap有如下特点:

1. WeakMap的key只能是对象,不能是基本类型,且对象不计入垃圾回收机制
2. WeakMap没有keys、values、entries、size方法
3. WeakMap没有遍历操作,无法遍历

WeakMap和WeakSet的作用,可以用来存储DOM节点,保持与DOM节点相关的数据,当DOM节点被删除后,集合中的数据自动删除,
这样就不必担心移除DOM节点时的内存泄漏了。

原文地址:https://www.cnblogs.com/mengff/p/9662477.html

时间: 2024-08-22 05:18:16

ES6 Set,WeakSet,Map,WeakMap的相关文章

js ES6 Set和Map数据结构详解

这篇文章主要介绍了ES6学习笔记之Set和Map数据结构,结合实例形式详细分析了ECMAScript中基本数据结构Set和Map的常用属性与方法的功能.用法及相关注意事项,需要的朋友可以参考下 本文实例讲述了ES6学习笔记之Set和Map数据结构.分享给大家供大家参考,具体如下: 一.Set ES6提供了新的数据结构Set.类似于数组,只不过其成员值都是唯一的,没有重复的值. Set本身是一个构造函数,用来生成Set数据结构. 1 . Set函数可以接受一个数组(或类似数组的对象)作为参数,用来

ES6中的Map集合(与java里类似)

Set类型可以用来处理列表中的值,但是不适用于处理键值对这样的信息结构.ES6也添加了Map集合来解决类似的问题 一.Map集合 JS的对象(Object),本质上是键值对的集合(Hash结构),但是传统上只能用字符串当作键.这给它的使用带来了很大的限制 为了解决这个问题,ES6提供了Map数据结构.它类似于对象,也是键值对的集合,但是"键"的范围不限于字符串,各种类型的值(包括对象)都可以当作键.也就是说,Object结构提供了"字符串-值"的对应,Map结构提供

ES6 Set 和 Map

ES5 模拟Set 与 Map 集合 Set 常用于检查对象中是否存在某个键名 Map集合常被用于获取已存的信息 所有对象的属性名必须是字符串,那么必须确保每个键名都是字符串类型且在对象中是唯一的 数值类型和对象类型的键名会自动转换为字符串类型 key1和key2被转换为对象对应的默认字符串"[object Object]" 本意是检查count属性是否存在,value为1,为真,若如果value为0或者不存在,if都不会执行 ES6 中的Set集合 一种有序列表,其中含有一些相互独立

es6 Set 和Map 数据结构

ES6提供了新的数据结构Set,它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个数据结构,用来生成Set 数据结构. const s = new Set(); [2,3,5,4,5,2,2,2].forEach(x=>s.add(x)); for(let i of s) { console.log(i); } // 2 3 5 4 Set 函数可以接受一个数组作为参数. 可以利用去除数组重复成员的方法. [...new Set(array)] // 去除数组重复变量成员

es6 Set和Map

我在csdn中写的相关文章,有兴趣可以查看,请点击下方链接(因为都是原创博客,有时候会有写错的地方, 所以就统一维护一份,在csdn里面编写) 希望写的文章对您有帮助,谢谢! es6 Set和Map 原文地址:https://www.cnblogs.com/jason0621/p/11161362.html

ES6 Map/WeakMap

JS的对象本身就是个键值结构,ES6为什么还需要加Map呢,它与普通的JS对象有何区别? 一.Map 1. Map构造器 先看Map的简单用法 // 字符串作为key, 和JS对象类似 var map = new Map() // set map.set('name', 'John') map.set('age', 29) // get map.get('name') // John map.get('age') // 29 这么对代码,看起来确实没有JS对象简洁 但Map的强大之处在于它的ke

ES6 Set/WeakSet

ES6里加入了一个新数据解构Set,和Java的Set一样,它里面不存放重复的元素.Set实现为一个类,使用时需要先new. var s1 = new Set() s1.add(1) s1.add(2) s1.add(3) s1.add(1) var s2 = new Set() s2.add('a') s2.add('a') // 输出1,2, 3 for (var i of s1 ) { console.log(i) } // 输出a for (var i of s2 ) { console

ES6 -Set 和 Map 数据结构

一.set 1.set数据结构:类似数组,但是里面不能有重复值 2.set语法, new Set([]) let set=new Set([1,2,1]); console.log(set);// {1, 2} 3.set 方法 // add() 增加,返回增加后的set console.log(set.add(3)); // {1, 2,3} // delete() 删除,返回true或false console.log(set.delete(2));// true // has() 判断是否

ES6新增数据结构Map的用法

Javascript的Object本身就是键值对的数据结构,但实际上属性和值构成的是”字符串-值“对,属性只能是字符串,如果传个对象字面量作为属性名,那么会默认把对象转换成字符串,结果这个属性名就变成”[object Object]“. ES6提供了”值-值“对的数据结构,键名不仅可以是字符串,也可以是对象.它是一个更完善的Hash结构. 特性 1.键值对,键可以是对象. const map1 = new Map() const objkey = {p1: 'v1'} map1.set(objk