ECMAScript 2017 是 JavaScript 的一个重要版本,其中引入了许多新的功能和特性。其中一个非常有用的功能是 Map 类型,它可以用来存储键值对的集合。在本文中,我们将详细介绍 Map 类型的特性和用法,并提供一些示例代码帮助您更好地理解。
Map 类型的基本特性
Map 类型是一种键值对的集合,其中键和值可以是任何类型的数据。与 JavaScript 中的对象不同,Map 类型可以使用任何数据类型作为键,包括字符串、数字、布尔值、对象和函数等。而且,Map 类型中的键和值是有序的,可以根据插入顺序进行迭代。
创建 Map 对象的语法如下:
let myMap = new Map();
在创建 Map 对象时,也可以传递一个数组作为参数,其中每个元素都是一个键值对。例如:
let myMap = new Map([ ['key1', 'value1'], ['key2', 'value2'], ['key3', 'value3'] ]);
Map 类型的常用方法
Map 类型提供了一些常用的方法,用于操作键值对的集合。下面是一些常用的方法:
set()
set() 方法用于向 Map 中添加新的键值对。它的语法如下:
myMap.set(key, value);
其中,key 是要添加的键,value 是要添加的值。例如:
let myMap = new Map(); myMap.set('key1', 'value1'); myMap.set('key2', 'value2');
get()
get() 方法用于获取 Map 中指定键的值。它的语法如下:
myMap.get(key);
其中,key 是要获取值的键。例如:
let myMap = new Map([ ['key1', 'value1'], ['key2', 'value2'], ['key3', 'value3'] ]); let value1 = myMap.get('key1'); // value1 = 'value1'
has()
has() 方法用于判断 Map 中是否存在指定键。它的语法如下:
myMap.has(key);
其中,key 是要判断的键。例如:
let myMap = new Map([ ['key1', 'value1'], ['key2', 'value2'], ['key3', 'value3'] ]); let hasKey1 = myMap.has('key1'); // hasKey1 = true let hasKey4 = myMap.has('key4'); // hasKey4 = false
delete()
delete() 方法用于删除 Map 中指定键的键值对。它的语法如下:
myMap.delete(key);
其中,key 是要删除的键。例如:
let myMap = new Map([ ['key1', 'value1'], ['key2', 'value2'], ['key3', 'value3'] ]); myMap.delete('key2');
clear()
clear() 方法用于清空 Map 中的所有键值对。它的语法如下:
myMap.clear();
例如:
let myMap = new Map([ ['key1', 'value1'], ['key2', 'value2'], ['key3', 'value3'] ]); myMap.clear();
size
size 属性用于获取 Map 中键值对的数量。例如:
let myMap = new Map([ ['key1', 'value1'], ['key2', 'value2'], ['key3', 'value3'] ]); let size = myMap.size; // size = 3
Map 类型的迭代方法
Map 类型提供了一些迭代方法,用于遍历 Map 中的键值对。下面是一些常用的迭代方法:
keys()
keys() 方法用于获取 Map 中所有键的迭代器。例如:
-- -------------------- ---- ------- --- ----- - --- ----- -------- ---------- -------- ---------- -------- --------- --- --- ---- - ------------- --- ---- --- -- ----- - ----------------- -
values()
values() 方法用于获取 Map 中所有值的迭代器。例如:
-- -------------------- ---- ------- --- ----- - --- ----- -------- ---------- -------- ---------- -------- --------- --- --- ------ - --------------- --- ---- ----- -- ------- - ------------------- -
entries()
entries() 方法用于获取 Map 中所有键值对的迭代器。例如:
-- -------------------- ---- ------- --- ----- - --- ----- -------- ---------- -------- ---------- -------- --------- --- --- ------- - ---------------- --- ---- ----- ------ -- -------- - ---------------- ------- -
Map 类型的示例代码
下面是一些使用 Map 类型的示例代码:
统计数组元素出现次数
-- -------------------- ---- ------- --- --- - --- -- -- -- -- -- -- -- --- --- -------- - --- ------ --- ---- --- -- ---- - -- ------------------- - ----------------- ----------------- - --- - ---- - ----------------- --- - - --- ---- ----- ------ -- ------------------- - ------------------- --- -------- ---- -
缓存函数计算结果
-- -------------------- ---- ------- -------- ------------ - -- -- --- - -- - --- -- - ------ -- - ------ ----------- - -- - ----------- - --- - --- -------------- - --- ------ -------- ------------------ - -- ----------------------- - ------ ---------------------- - --- ------ - ------------- --------------------- -------- ------ ------- -
总结
Map 类型是 ECMAScript 2017 中引入的一个非常有用的功能,它可以用来存储键值对的集合。与 JavaScript 中的对象不同,Map 类型可以使用任何数据类型作为键,而且键值对是有序的,可以根据插入顺序进行迭代。在实际开发中,Map 类型可以用来实现很多有用的功能,例如统计数组元素出现次数、缓存函数计算结果等。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6507f01e95b1f8cacd31c4ea