小编典典

JavaScript 中的映射与对象

all

我刚刚发现了这个功能

Map:Map 对象是简单的键/值映射。

这让我很困惑。常规 JavaScript 对象是字典,那么 aMap与字典有什么不同呢?从概念上讲,它们是相同的

该文档也无济于事:

Map 对象是键/值对的集合,其中键和值都可以是任意的 ECMAScript 语言值。不同的键值可能仅出现在 Map 集合内的一个键/值对中。使用创建
Map 时选择的比较算法区分不同的键值。

Map 对象可以按插入顺序迭代其元素。映射对象必须使用哈希表或其他机制来实现,这些机制平均提供的访问时间与集合中的元素数量呈次线性关系。本 Map
对象规范中使用的数据结构仅用于描述 Map 对象所需的可观察语义。它不是一个可行的实现模型。

‘ 直到听起来对我来说像是一个对象,所以很明显我错过了一些东西。

为什么 JavaScript 获得了一个(得到良好支持的)Map对象?它有什么作用?


阅读 208

收藏
2022-03-14

共1个答案

小编典典

根据 MDN:

Map 对象可以按插入顺序迭代其元素 -for..of循环将为每次迭代返回一个 [key, value] 数组。

对象与 Maps
类似,都允许您将键设置为值、检索这些值、删除键以及检测是否在键中存储了某些内容。正因为如此,对象在历史上一直被用作地图;但是,Objects 和
Maps 之间存在重要的区别,它们可以更好地使用 Map。

一个对象有一个原型,所以地图中有默认键。但是,这可以使用 map = Object.create(null) 绕过。Object
的键是字符串,它们可以是 Map 的任何值。您可以轻松获取地图的大小,而您必须手动跟踪对象的大小。

地图

有序迭代是开发人员长期以来一直想要的功能,部分原因是它确保了所有浏览器的相同性能。所以对我来说这是一个大问题。

myMap.has(key)方法将特别方便,还有myMap.size属性。

2022-03-14