ECMAScript 2017
是 JavaScript
语言的最新标准版本,在这个版本中,添加了两个新的数据结构:Set
和 Map
。
Set
Set
是一种无序且不重复的集合结构。集合中的元素可以是任意类型的对象。Set
相较于数组拥有更好性能,因为它内部使用了类似 Hash Table
的算法,支持常数级别的添加、查找和删除操作。
创建 Set
在 ES6
中,我们可以使用 new Set()
来创建一个空的 Set
。
----- --- - --- ------
我们还可以使用一个可迭代对象来初始化一个 Set
。
----- --- - --- ------- -- ---- ----------------- -- -- ------ --- -- --
添加元素
我们可以使用 add()
方法向 Set
中添加新的元素。
----- --- - --- ------ --------------- ----------- ----------------- -- -- ------ ------- --
需要注意的是,Set
中不允许添加重复的元素。
删除元素
我们可以使用 delete()
方法来删除 Set
中指定的元素。
----- --- - --- ------- -- ---- -------------- ----------------- -- -- ------ --- --
检查元素是否存在
我们可以使用 has()
方法来检查 Set
中是否包含某个元素。
----- --- - --- ------- -- ---- ------------------------ -- -- ----
遍历 Set
我们可以使用 for...of
循环来遍历 Set
中的所有元素。
----- --- - --- ------- -- ---- --- ------ ---- -- ---- - ------------------ - -- -- -- - -- - -- -
Set 和数组之间的转换
我们可以使用 Array.from()
方法将 Set
转换为数组。
----- --- - --- ------- -- ---- ----- --- - ---------------- ----------------- -- -- --- -- --
反之,我们也可以使用 new Set()
将数组转换为 Set
。
----- --- - --- -- --- ----- --- - --- --------- ----------------- -- -- ------ --- -- --
Map
Map
是一种键值对的映射结构。与 Object
一样,键可以是任意类型的对象。Map
相较于 Object
拥有更好性能,因为它内部使用了类似 Hash Table
的算法,支持常数级别的添加、查找和删除操作。
创建 Map
在 ES6
中,我们可以使用 new Map()
来创建一个空的 Map
。
----- --- - --- ------
我们还可以使用一个可迭代对象来初始化一个 Map
。
----- --- - --- ------------- ------- ------- ------ ----------------- -- -- ------ - ------ -- ------ ----- -- -- -
添加元素
我们可以使用 set()
方法向 Map
中添加新的键值对。
----- --- - --- ------ --------------- ------- -------------- ---- ----------------- -- -- ------ - ------ -- ------ ----- -- -- -
如果添加的键已经存在,那么将会更新键对应的值。
----- --- - --- ------ --------------- ------- --------------- --------- ----------------- -- -- ------ - ------ -- ------- -
获取元素
我们可以使用 get()
方法获取 Map
中指定键的值。
----- --- - --- ------------- ------- ------- ------ ----------------------------- -- -- -----
如果指定的键不存在,那么将会返回 undefined
。
删除元素
我们可以使用 delete()
方法来删除 Map
中指定的键值对。
----- --- - --- ------------- ------- ------- ------ ------------------ ----------------- -- -- ------ - ------ -- ----- -
检查键是否存在
我们可以使用 has()
方法来检查 Map
中是否包含某个键。
----- --- - --- ------------- ------- ------- ------ ---------------------------- -- -- ----
遍历 Map
我们可以使用 for...of
循环来遍历 Map
中的所有键值对。
----- --- - --- ------------- ------- ------- ------ --- ------ ----- ------ -- ---- - ---------------- ------- - -- -- -- ---- --- -- --- --
我们也可以使用 forEach()
方法来遍历 Map
中的所有键值对。
----- --- - --- ------------- ------- ------- ------ ------------------- ---- -- - ---------------- ------- --- -- -- -- ---- --- -- --- --
Map 和对象之间的转换
我们可以使用 Object.fromEntries()
将 Map
转换为对象。
----- --- - --- ------------- ------- ------- ------ ----- --- - ------------------------ ----------------- -- -- - ----- ------ ---- -- -
反之,我们也可以使用 new Map()
将对象转换为 Map
。
----- --- - - ----- ------ ---- -- -- ----- --- - --- ------------------------- ----------------- -- -- ------ - ------ -- ------ ----- -- -- -
总结
Set
和 Map
是 ECMAScript 2017
新增的两个数据结构,它们可以优化 JavaScript
中集合和映射的性能。这些新功能与其他新的 ES2015
和 ES2016
功能一起,为 JavaScript
语言带来了更多的灵活性和实用性。
我们可以使用 Set
和 Map
来无缝替换以前使用的数组和对象,以获得更好的性能和更好的代码可读性。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64c32bf383d39b488171fb19