set和map的区别

84 阅读2分钟

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