在 JavaScript 中,Set 和 Map 是两个常用的数据结构。在 ES12 中,这两个数据结构也得到了进一步的加强和优化。本文将详细介绍 ES12 中的 Set 和 Map,包括其基本用法、新特性以及实际应用场景。
Set
Set 是一种无序且唯一的数据集合,它可以存储任何类型的值,不论是基本类型还是引用类型。ES6 中引入了 Set,ES12 中对其进行了一些改进。
基本用法
创建一个 Set 很简单,只需要使用 new Set()
即可:
----- --- - --- ------
向 Set 中添加元素使用 add()
方法:
----------- ----------------- -------------- ------ ---- -----
Set 中不允许重复的元素,因此如果添加重复的元素,不会产生任何效果:
----------- ----------- -- --------
Set 的长度可以通过 size
属性获取:
---------------------- -- -
可以通过 has()
方法判断 Set 中是否包含某个元素:
------------------------ -- ---- ------------------------ -- -----
从 Set 中删除元素使用 delete()
方法:
--------------
新特性
ES12 中为 Set 增加了以下新特性:
Set.prototype.intersection()
intersection()
方法用于计算两个 Set 的交集,并返回一个新的 Set。示例代码如下:
----- ---- - --- ------- -- ---- ----- ---- - --- ------- -- ---- ----- --------------- - ------------------------ -- -- --- --- --
Set.prototype.union()
union()
方法用于计算两个 Set 的并集,并返回一个新的 Set。示例代码如下:
----- ---- - --- ------- -- ---- ----- ---- - --- ------- -- ---- ----- -------- - ----------------- -- -- --- --- -- -- --
Set.prototype.difference()
difference()
方法用于计算两个 Set 的差集,并返回一个新的 Set。示例代码如下:
----- ---- - --- ------- -- ---- ----- ---- - --- ------- -- ---- ----- ------------- - ---------------------- -- -- --- ---
Set.prototype.isSubsetOf()
isSubsetOf()
方法用于判断当前 Set 是否是另一个 Set 的子集。示例代码如下:
----- ---- - --- ------- -- ---- ----- ---- - --- ------- -- -- ---- ----------------------------------- -- ----
Set.prototype.isSupersetOf()
isSupersetOf()
方法用于判断当前 Set 是否是另一个 Set 的超集。示例代码如下:
----- ---- - --- ------- -- -- ---- ----- ---- - --- ------- -- ---- ------------------------------------- -- ----
Map
Map 是一种键值对集合,其中每个键都唯一对应一个值。ES6 中引入了 Map,ES12 中对其进行了一些改进。
基本用法
创建一个 Map 很简单,只需要使用 new Map()
即可:
----- --- - --- ------
向 Map 中添加元素使用 set()
方法:
--------------- ------- -------------- ---- ------------------ ------ ---------- --------- ------------
获取 Map 中对应键的值使用 get()
方法:
----------------------------- -- --- ---------------------------- -- -- -------------------------------- -- ------ ---------- --------- ----------
从 Map 中删除元素使用 delete()
方法:
-------------------
新特性
ES12 中为 Map 增加了以下新特性:
Map.prototype.merge()
merge()
方法用于将两个 Map 合并为一个,并返回一个新的 Map。如果两个 Map 中存在相同的键,则后者的值会覆盖前者的值。示例代码如下:
----- ---- - --- ------------- ------- ------- ------ ----- ---- - --- ------------- --------- ----------- ------------- ----- --------- - ----------------- -- -- --- ------ -------- ---- --- -------- ----------
Map.prototype.mapKeys()
mapKeys()
方法用于对 Map 中的所有键进行映射,并返回一个新的 Map。示例代码如下:
----- --- - --- ------------- ------- ------- ------ ----- --------- - --------------- -- ------------------- -- -- --- ------ ------ ---- ---
Map.prototype.mapValues()
mapValues()
方法用于对 Map 中的所有值进行映射,并返回一个新的 Map。示例代码如下:
----- --- - --- ------------- ------- ------- ------ ----- --------- - ------------------- -- ------ ------- -- -- --- ------ --------- ---- ---------
Map.prototype.filter()
filter()
方法用于对 Map 中的所有键值对进行过滤,并返回一个新的 Map。示例代码如下:
----- --- - --- ------------- ------- ------- ---- ----------- ------------- ----- ----------- - ------------------ ---- -- --- --- -------- -- -- --- ----- --- -------- ----------
应用场景
Set 和 Map 在实际开发中有很多应用场景,下面列举一些常见的场景:
Set
数组去重
使用 Set 可以轻松实现数组去重,示例代码如下:
----- --- - --- -- -- -- -- --- ----- --------- - ------- ---------- -- -- --- -- -- --
Map
缓存数据
使用 Map 可以方便地实现数据缓存,示例代码如下:
----- ----- - --- ------ -------- ------------ - -- ---------------- - ------ --------------- - ---- - ----- ---- - --------------- -------------- ------ ------ ----- - -
总结
本文详细介绍了 ES12 中的 Set 和 Map,包括其基本用法、新特性以及实际应用场景。Set 和 Map 是 JavaScript 中非常常用的数据结构,掌握它们的使用方法对于提高开发效率和代码质量都有很大帮助。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6563d1bcd2f5e1655dd46e11