Set 和 Map 是 JavaScript 中两种不同的集合对象,它们的主要区别如下:
-
存储方式:
Set
:存储唯一值的集合,成员值是唯一的,没有键,每个值只能出现一次。Map
:存储键值对的集合,键和值可以是任意类型,允许重复的键。
-
主要方法:
-
Set
:add(value)
:添加一个新元素到 Set 对象中。delete(value)
:从 Set 对象中移除指定的元素。has(value)
:返回一个布尔值,表示某个元素是否存在于 Set 对象中。clear()
:清空 Set 对象中的所有元素。size
:返回 Set 对象中元素的数量。
-
Map
:set(key, value)
:在 Map 对象中设置键/值对。get(key)
:从 Map 对象中获取指定键的值。has(key)
:返回一个布尔值,表示 Map 对象中是否存在指定的键。delete(key)
:从 Map 对象中移除指定键的键/值对。clear()
:清空 Map 对象中的所有键/值对。size
:返回 Map 对象中键/值对的数量。
-
-
遍历:
Set
:可以通过for...of
或者forEach
方法进行遍历。Map
:除了for...of
和forEach
外,还可以通过keys()
、values()
和entries()
方法来分别遍历键、值或键值对。
-
性能:
Set
:查找、插入和删除操作的时间复杂度接近 O(1)。Map
:同样具有高效的查找、插入和删除操作,时间复杂度接近 O(1),并且可以根据键快速访问对应的值。
-
应用场景:
Set
:适用于需要确保元素唯一性的场景,例如去重。Map
:适用于需要存储键值对,并且根据键快速查找对应值的场景。
总结来说,选择使用 Set
还是 Map
取决于你的具体需求。如果你只需要存储不重复的值,那么 Set
是更好的选择;如果你需要存储键值对并根据键访问值,那么应该使用 Map
。