【问题标题】:Is there any disadvantage of using Map over Object in Javascript?在 Javascript 中使用 Map over Object 有什么缺点吗?
【发布时间】:2018-09-01 20:46:05
【问题描述】:

相比 ES6 的 Map(),使用 Object 有什么明显的好处吗?我喜欢将它用于forEach 函数。在需要哈希表时选择Map() 是不是一种不好的做法?

【问题讨论】:

    标签: javascript dictionary hashtable


    【解决方案1】:

    在 Javascript 上下文中 ObjectMap 的情况更多的是一个问题,即您是否需要通用或专用工具来完成这项工作。

    Map 实际上只是一种特殊类型的对象(就像您将在应用程序中构造的任何其他类型的对象一样。您甚至可以创建自己的 Map() 构造函数来模仿 ES6 映射)。与其他对象一样,它具有访问其功能的方法。 Map 的“特长”是高效的键值存储。

    另一方面,Object 是 Javascript 的原生数据类型之一,可用于多种用途(Map 就是其中之一)。它不是为任何一种目的而“专门”的。

    所以,总而言之:

    • 如果您使用Map 作为高效的哈希表,去吧!这就是它的目的。
    • 如果您将 Map 用于键值存储以外的任何内容(或者,如您所说,只是因为 forEach 方法),您可能需要重新考虑使用它来支持更合适的数据结构(可能是也可能不是普通的旧对象)

    【讨论】:

    • ...反之亦然 - 如果您将对象用作哈希表,请停止这样做!
    【解决方案2】:

    MDN 上有一个很好的解释,说明何时以及为什么更喜欢 Map 而不是 Object

    总结一下:

    • Map 具有有用的属性、实用功能并且是可迭代的,这 与使用 Object 相比,可以节省一些写作时间(例如在尝试查找键值对的数量时)
    • Map 在密集的键值操作(添加、删除)中性能更高
    • Map 可防止您的键与预定义对象的原型属性之间发生不必要的冲突
    • Map 可以使用对象作为键

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      • 2013-09-13
      相关资源
      最近更新 更多