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。