【发布时间】:2018-09-01 20:46:05
【问题描述】:
相比 ES6 的 Map(),使用 Object 有什么明显的好处吗?我喜欢将它用于forEach 函数。在需要哈希表时选择Map() 是不是一种不好的做法?
【问题讨论】:
标签: javascript dictionary hashtable
相比 ES6 的 Map(),使用 Object 有什么明显的好处吗?我喜欢将它用于forEach 函数。在需要哈希表时选择Map() 是不是一种不好的做法?
【问题讨论】:
标签: javascript dictionary hashtable
在 Javascript 上下文中 Object 与 Map 的情况更多的是一个问题,即您是否需要通用或专用工具来完成这项工作。
Map 实际上只是一种特殊类型的对象(就像您将在应用程序中构造的任何其他类型的对象一样。您甚至可以创建自己的 Map() 构造函数来模仿 ES6 映射)。与其他对象一样,它具有访问其功能的方法。 Map 的“特长”是高效的键值存储。
另一方面,Object 是 Javascript 的原生数据类型之一,可用于多种用途(Map 就是其中之一)。它不是为任何一种目的而“专门”的。
所以,总而言之:
Map 作为高效的哈希表,去吧!这就是它的目的。Map 用于键值存储以外的任何内容(或者,如您所说,只是因为 forEach 方法),您可能需要重新考虑使用它来支持更合适的数据结构(可能是也可能不是普通的旧对象)【讨论】:
MDN 上有一个很好的解释,说明何时以及为什么更喜欢 Map 而不是 Object。
总结一下:
【讨论】: