在 Javascript 中使用 Map over Object 有什么缺点吗?
Is there any disadvantage of using Map over Object in Javascript?
与 ES6 Map()
相比,使用 Object 有什么明显的好处吗?我喜欢将它用于 forEach
函数。在需要哈希表时选择 Map()
是一种不好的做法吗?
在 Javascript 的上下文中 Object
与 Map
的情况更像是一个问题,即您是想要通用工具还是专用工具来完成这项工作。
Map
实际上只是一种特殊的对象(就像您将在应用程序中构造的任何其他类型的对象一样。您甚至可以制作自己的 Map()
构造函数来模仿 ES6地图)。与其他对象一样,它具有访问其功能的方法。 Map
的 "specialty" 是一个高效的 key-value 商店。
另一方面,Object
是 Javascript 的原生数据类型之一,可用于多种用途(Map
就是其中之一)。它不是 "specialized" 用于任何一个目的。
所以,总而言之:
- 如果您使用
Map
作为有效的散列 table,那就去吧 !这就是它的用途。
- 如果您将
Map
用于除键值存储以外的任何其他用途(或者,如您所说,只是 因为 forEach
方法)您可能不得不重新考虑使用它以支持更 suitable 数据结构(它可能是也可能不是普通的旧对象)
MDN 上有一个很好的解释,说明什么时候以及为什么更喜欢 Map
而不是 Object
。
总结一下:
- Map 具有有用的属性、实用函数并且是可迭代的,这
与使用 Object 相比,可以节省一些写作时间(比如在尝试查找 key-value 对的数量时)
- Map 在密集的 key-value 操作(添加、删除)中可以更高效
- Map 可防止您的键与预定义对象的原型属性之间发生不必要的冲突
- Map 可以使用对象作为键
与 ES6 Map()
相比,使用 Object 有什么明显的好处吗?我喜欢将它用于 forEach
函数。在需要哈希表时选择 Map()
是一种不好的做法吗?
在 Javascript 的上下文中 Object
与 Map
的情况更像是一个问题,即您是想要通用工具还是专用工具来完成这项工作。
Map
实际上只是一种特殊的对象(就像您将在应用程序中构造的任何其他类型的对象一样。您甚至可以制作自己的 Map()
构造函数来模仿 ES6地图)。与其他对象一样,它具有访问其功能的方法。 Map
的 "specialty" 是一个高效的 key-value 商店。
另一方面,Object
是 Javascript 的原生数据类型之一,可用于多种用途(Map
就是其中之一)。它不是 "specialized" 用于任何一个目的。
所以,总而言之:
- 如果您使用
Map
作为有效的散列 table,那就去吧 !这就是它的用途。 - 如果您将
Map
用于除键值存储以外的任何其他用途(或者,如您所说,只是 因为forEach
方法)您可能不得不重新考虑使用它以支持更 suitable 数据结构(它可能是也可能不是普通的旧对象)
MDN 上有一个很好的解释,说明什么时候以及为什么更喜欢 Map
而不是 Object
。
总结一下:
- Map 具有有用的属性、实用函数并且是可迭代的,这 与使用 Object 相比,可以节省一些写作时间(比如在尝试查找 key-value 对的数量时)
- Map 在密集的 key-value 操作(添加、删除)中可以更高效
- Map 可防止您的键与预定义对象的原型属性之间发生不必要的冲突
- Map 可以使用对象作为键