ES6 Map

17 Mar 2025 | 4 分钟阅读

ES6 是一系列添加到 JavaScript 的新功能。 在 ES6 之前,当我们要求映射键和值时,我们经常使用对象。 这是因为对象允许我们将键映射到任何类型的值。

ES6 为我们提供了一种称为 Map 的新集合类型,它保存键值对,其中任何类型的值都可以用作键或值。 Map 对象始终记住键的实际插入顺序。 Map 对象中的键和值可以是原始类型或对象。 它返回新的或空的 Map。

Maps 是有序的,因此它们按插入顺序遍历元素。

语法

要创建一个新的 Map,我们可以使用以下语法

Map () 接受一个可选的可迭代对象,其元素为键值对。

Map 属性

序号。性质描述
1.Map.prototype.size此属性返回 Map 对象中键值对的数量。

让我们简要了解 Map 对象的上述属性。

Map.prototype.size

它返回 Map 对象中的元素数量。

语法

示例

输出

4

Map 方法

Map 对象包含多个方法,如下表所示

序号。方法描述
1.Map.prototype.clear()它从 Map 对象中删除所有键和值对。
2.Map.prototype.delete(key)它用于删除条目。
3.Map.prototype.has(value)它检查 Map 对象中是否存在对应的键。
4.Map.prototype.entries()它用于返回一个新的迭代器对象,该对象具有 Map 对象中每个元素的键值对数组,按插入顺序排列。
5.Map.prototype.forEach(callbackFn[, thisArg])它执行 callback 函数一次,该函数为 Map 中的每个元素执行。
6.Map.prototype.keys()它返回 Map 中所有键的迭代器。
7.Map.prototype.values()它返回 Map 中每个值的迭代器。

Weak Maps

Weak Maps 与普通 Maps 几乎相同,只是弱映射中的键必须是对象。 它将每个元素存储为键值对,其中键被弱引用。 在这里,键是对象,值是任意值。 Weak Map 对象只允许对象类型的键。 如果没有对键对象的引用,则它们将被垃圾回收。 在弱 Map 中,键不可枚举。 因此,没有方法可以获取键的列表。

弱映射对象按插入顺序迭代其元素。 它仅包含 delete(key)、get(key)、has(key)set(key, value) 方法。

让我们尝试理解弱 Map 的说明。

示例

输出

WeakMap { <items unknown> }
true

for...of 循环和 Weak Maps

for...of 循环用于对 Map 对象的键、值进行迭代。 以下示例将说明使用 for...of 循环遍历 Map 对象。

示例

输出

Red
Green
Yellow
Violet

1: Red
2: Green
3: Yellow
4: Violet

迭代器和 Map

迭代器是一个对象,它定义序列并在其终止时返回值。 它允许一次访问一个对象集合。 Set 和 Map 都包含返回迭代器的方法。

迭代器是具有 next() 方法的对象。 当调用 next() 方法时,迭代器返回一个对象以及 "value""done" 属性。

让我们尝试理解迭代器的一些实现以及 Map 对象。

示例-1

输出

{ value: 'Red', done: false }
{ value: 'Green', done: false }
{ value: 'Yellow', done: false }

示例-2

输出

{ value: [ '1', 'Red' ], done: false }
{ value: [ '2', 'Green' ], done: false }
{ value: [ '3', 'Yellow' ], done: false }

示例-3

输出

{ value: '1', done: false }
{ value: '2', done: false }
{ value: '3', done: false }

下一个主题ES6 Set