ES6:Set和Map

灰烬
• 阅读 2520

Set

Set:类似数组,但是成员的值都是唯一的,没有重复。
Set本身是一个构造函数,用来生成Set数据结构。
他包含的方法:
add: 添加某个值,返回Set结构本身。
delete: 删除某个值,返回一个布尔值,表示是否成功;
has(value): 返回布尔值,表示该值是否为Set的成员;
clear():清除所有成员,没有返回值
遍历操作
keys():返回键名的遍历器
values(): 返回健值对的遍历器
entries():返回键值对的遍历器
forEach(): 每个成员

WeakSet

他与Set类似,但是也有区别
1.weakSet的成员只能是对象,不能是其他类型的值
2.weakSet对象都是弱引用。如果其他对象不再引用该对象,那么垃圾回收机制会自动回收该对象所占的内存,所以WeakSet是不可遍历的。

WeakSet结构的三个方法
add
delete
has
WeakSet的一个用处是储存DOM节点,而不用担心这些节点会从文档中移除时,会引发内存泄露。

Map

他是键值对的集合(Hash结构)。他与Object结构的区别是:Object是一种“字符串-值”的对应,Map是“值-值”的对应。所以当需要“键值对”这样的数据结构时,Map比Object更合适。
他的方法:
set(key, value)
get(key)
has(key)
delete(key)
clear()
遍历方法
keys()
values()
entries()
forEach()

WeakMap

WeakMap跟Map结构基本类似,区别是只接受对象(null除外)作为键名,不接受其他类型的值作为键名,而且键名所指向的对象,不计入垃圾回收机制。

点赞
收藏
评论区
推荐文章
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
明月 明月
3年前
JS数据类型的几种判断方法
1.typeof(常用)typeof是一个运算符,返回值是一个字符串,用来说明变量的数据类型,可以用来判断number,string,object,boolean,function,undefined,symbol这七种类型.2.instanceof(知道即可)instanceof运算符用于检测构造函数的prototype属性是否出现在某个实例对象的原型链上,返回值为布尔值,用于指示一个变量是否属于某个对象的实例3.Object.prototype.to
LinMeng LinMeng
4年前
ES6之set
constsnewSet();2,3,4,2,3,4,5,6,2,3,3.forEach(xs.add(x))console.log(s);for(letiofs){console.log(i)}console.log(s.add(9));//add(value),添加某个值,返回Set结构本身console.log(s.d
Wesley13 Wesley13
3年前
MongoDB学习系列11:MongoDB中的修改器
使用修改器时,"\_id"的值不能改变,而整个文档在替换时是可以改变"\_id"的。$set用来修改一个键的值。$unset用来删除一个键。$inc用来增加已有键的值,或者在键不存在时创建一个键。只能用于整数、长整数、或者双精度浮点数。$push往数组里添加东西,$pop从数组中删除元素。{$pop:{key:1}}从数据末
Wesley13 Wesley13
3年前
ES6 新增了哪些字符串处理方法
ES6新增了哪些字符串处理方法我们都知道在ES6之前,我们只能使用indexOf来判断字符串是否存在某个字符,现在ES6多出了几个比较常用的方法:includes():返回布尔值,判断是否找到参数字符串。startsWith():返回布尔值,判断参数字符串是否在原字符
Wesley13 Wesley13
3年前
ES6字符串的扩展方法
includes(),startsWith(),endsWith() 传统上,JavaScript只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6又提供了三种新方法。includes():返回布尔值,表示是否找到了参数字符
Stella981 Stella981
3年前
Map查找表,队列和栈
存入keyvalue对Vput(Kk,Vv);获取key所对应的value值Vget(Kk);判断Map是否包含给定的key或value值:booleancontainsKey(Kk),booleancontainsValue(Vv);遍历所有的key:Set<KkeySet();遍历所有keyvalue对Set<Entrye
Wesley13 Wesley13
3年前
ES6基础之——判断字符串里是否包含其他字符串
在ES6里面添加了一些字符串的方法:includes()、startsWith()、endsWith(),他们可以很方便的判断字符串里是否包含其他字符串;includes():是否包含了参数字符串,返回布尔值startsWith():参数字符串是否在原字符串的头部,返回布尔值endsWith():参数字符串是否在原字符串的尾部,返回布尔值例子
Wesley13 Wesley13
3年前
Java方面技术点小整理
Java中的集合吗?java中的集合分为value、keyvalueg两种存储值有分为list和setList有序的,可以重复Set是序的,不可以重复的根据equals和hashCode判断如果一个对象要存储在set中,必须重写equals和hashCode的方法;存储keyvalue的为map
菜园前端 菜园前端
2年前
什么是集合?
原文链接:什么是集合?集合是一种无序且唯一的数据结构,其中的唯一是指集合中的元素。在ES6中新增了一种数据结构Set就是集合。实现功能new()实例化一个集合add()添加元素delete()删除元素has()判断是否存在元素size()获取集合大小应用场
菜园前端 菜园前端
2年前
什么是字典?
原文链接:什么是字典?与集合类似,字典也是一种存储唯一值的数据结构,但它是以键值对的形式来存储。在ES6中新增了Map字典。实现功能delete删除元素clear清空所有元素set添加/覆盖元素get查找/返回元素的值has判断是否包含某个元素应用场景1.