地图和字典/对象有何不同?
换句话说,let x = {}
和 let x = new Map()
之间有什么区别?
地图和字典/对象有何不同?
换句话说,let x = {}
和 let x = new Map()
之间有什么区别?
对象和映射的比较(来自 MDN):
对象与 Map 相似,都允许您将键设置为值,检索这些值,删除键以及检测是否在键处存储了某些东西。因此(并且因为没有内置的替代方案),历史上已将 Objects 用作 Maps; 然而,Objects 和 Maps 之间存在重要差异,使使用 Map 更好: - 对象具有原型,因此映射中有默认键。自 ES5 以来,可以通过使用 map = Object.create(null) 来绕过此问题,但很少这样做。 - 对象的键是字符串和符号,而对于 Map,它们可以是任何值。 - 您可以轻松地获取 Map 的大小,而必须手动跟踪对象的大小。JSON.stringify()
忽略了 Map 的内容。 - Pointy
Map
可以使用任何值作为键(例如另一个对象),而使用{}
则需要将字符串作为键。实际上,Map 可以包含具有"1"
和1
键的不同项,但普通对象则不行。当然,Map 对象具有适用于 Map 对象的内置方法,而{}
则没有。 - jfriend00