JavaScript 中的 Map 对象是键值对的集合,其中键可以是任何类型,包括对象或函数。映射元素的顺序与键值对的插入顺序相同。
要创建新的 Map 对象,可以使用新的 Map() 构造函数。然后,您可以使用 set() 方法将键值对添加到映射中。要获取特定键的值,您可以使用 get() 方法。要从 map 中删除键值对,可以使用 delete() 方法。
语法
以下是在 JavaScript 中使用 Map 数据结构的语法 -
在上面的语法中,我们使用了 'new' 关键字和 Map() 构造函数来定义 Map 的实例。
参数
- iterable − 它是一个包含键值对的可迭代对象,用于使用可迭代对象的元素初始化 Map。此外,它是一个可选参数。
JavaScript 中的 Map 类包含一组内置方法,允许我们使用 Map 对象。在这里,我们列出了 Map 的属性和方法。
Map 属性
以下是 Map 对象的属性 −
名称 | 描述 |
---|---|
size | 此属性返回此映射中的元素数。 |
Map 方法
在下表中,我们列出了 Map 对象的所有方法及其描述 -
名称 | 描述 |
---|---|
clear() |
此方法从 Map 对象中删除所有元素。 |
delete() |
该方法按键从 Map 对象中删除指定的元素。 |
entries() |
此方法返回包含 [key, value] 对的新 map 迭代器对象。 |
forEach() |
此方法对 Map 对象中的每个键/值对执行一次回调函数。 |
get() |
此方法用于从 Map 对象返回指定的元素。 |
has() |
该方法指示具有指定键的元素是否存在。 |
keys() |
此方法返回一个新的 Iterator 对象,其中包含 Map 对象中每个元素的键。 |
set() |
该方法将键值对插入到 Map 对象中。 |
values() |
此方法返回一个新的 Iterator 对象,其中包含 Map 对象的值。 |
JavaScript Map 构造函数()
以下是 JavaScript 中 Map 的构造函数 -
名称 | 描述 |
---|---|
Map() |
创建 Map 对象。 |
例子
示例:创建新的 Map 对象
在下面的示例中,我们已将包含键值对的 2D 数组作为 Map() 构造函数的参数传递。
之后,我们遍历 map 以获取 map 的每个值,并在输出中显示。
输出
执行上述程序后,它返回 map 的每个值。
Apple : 100
Banana : 20
Orange : 50
示例:在 Map 中插入键值对
在下面的示例中,我们使用 set() 方法在 map 中插入键值对。set() 方法将 key 作为第一个参数,将 value 作为第二个参数。
输出
Grapes : 40
Apples : 50
正如我们在输出中看到的,提供的 [key-value] 对已插入到 Map 对象中。
示例:访问 Map 元素
get() 方法可用于访问 map 元素。在这里,我们向集合添加了元素。
之后,我们使用 get() 方法访问 name 和 RollId 键的值。
输出
执行后,它返回 Map 对象中存在的所有元素。
Roll Id: 123
示例:删除 Map 元素
在下面的示例中,我们使用 delete() 方法删除键为 20 的键值对。
但是,您也可以使用 clear() 方法从 Map 中删除所有元素。
输出
Key: 10 Value: 20
Key: 30 Value: 40
示例: Map 的大小
在下面的代码中,我们使用了 Map 类的 'size' 属性来获取 Map 中键值对的总数。
输出
示例:使用 object 作为键
该映射允许开发人员将对象用作键。在这里,我们定义了包含两个属性的 laptop 对象。
之后,我们将对象设置为键,将笔记本电脑的价格设置为 map 中的值。
输出
JavaScript 中的 Map vs. Object
Map 类似于 JavaScript 中的 Object,但有一些差异,我们在这里已经解释了 -
基础比较 | Map | Object |
---|---|---|
键 | 该 map 允许您将对象、函数和其他原始值设置为键。 | Object 只能包含一个字符串和一个作为键的 symbol 。 |
大小 | 您可以使用 'size' 属性获取 Map 的大小。 | 您需要遍历 Object 以确定对象的大小。 |
键比较 | 它使用灵活的方法来比较键。它将具有不同引用的两个相似对象视为不同对象。 | 它将键隐式转换为字符串并匹配它们。 |
迭 代 | 您可以使用 for...of 循环遍历 Map | 您可以使用 for...in 循环遍历 Object 属性。 |
性能 | 由于其复杂的结构, Map 的速度略慢。 | Object 比 map 更快,因为它只以字符串格式存储键。 |
使用案例 | map 是动态添加键值对的更好选项。 | 如果键值对是静态且固定的,则最好使用该对象。 |