在Javascript中使用Map over Object有什么缺点吗?

时间:2018-03-23 08:19:04

标签: javascript dictionary hashtable

使用Object over ES6' Map()是否有明显的好处?我喜欢将它用于forEach函数。在需要哈希表时选择Map()是不好的做法吗?

2 个答案:

答案 0 :(得分:4)

Javascript环境中Object vs Map的情况更多的是您是否需要通用或专用工具的问题。

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

另一方面,Object是Javascripts本机数据类型之一,可用于各种目的(Map是其中之一)。它不是专业的"出于任何目的。

所以,最后:

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

答案 1 :(得分:0)

关于何时以及为何选择Map优先于ObjectMDN有一个很好的解释。

总结一下:

  • 地图有有用的属性,实用程序功能,并且是Iterable ,这是 与使用Object相比,节省了一些写作(就像尝试查找键值对的数量一样)
  • 密集键值操作(adition,removal)中的地图可以提高性能
  • 地图可防止您的密钥与预定义对象的原型属性之间发生意外冲突
  • 地图可以使用对象作为键