键值对(key value pair)数据集合的特点:键不可重复
map集合专门用于存储多个键值对数据。
在map出现之前,我们使用的是对象的方式来存储键值对,键是属性名,值是属性值。
1. 创建map
new Map(); //创建一个空的map new Map(iterable); //创建一个具有初始内容的map,初始内容来自于可迭代对象每一次迭代的结果,但是,它要求每一次迭代的结果必须是一个长度为2的数组,数组第一项表示键,数组的第二项表示值
const mp = new Map([
[1, 2],
[3, 4],
[5, 6],
[1, 2]
]);
console.log(mp)
输出:
Map(3) {1 => 2, 3 => 4, 5 => 6}
2. 属性和方法
-
size:只读属性,获取当前map中键的数量
-
set(键, 值):设置一个键值对,键和值可以是任何类型
-
如果键不存在,则添加一项
-
如果键已存在,则修改它的值
-
比较键的方式和set相同
-
-
get(键): 根据一个键得到对应的值
-
has(键):判断某个键是否存在
-
delete(键):删除指定的键
-
clear(): 清空map
3. 和数组互相转换
const mp = new Map([
[1, 2],
[3, 4],
[5, 6],
[1, 2]
]);
const arr = [...mp];
console.log(arr)
输出:
(3) [Array(2), Array(2), Array(2)]
0: (2) [1, 2]
1: (2) [3, 4]
2: (2) [5, 6]
4. 遍历
-
for-of,每次迭代得到的是一个长度为2的数组
-
forEach,通过回调函数遍历
-
参数1:每一项的值
-
参数2:每一项的键
-
参数3:map本身
-
const mp = new Map([
[1, 2],
[3, 4],
[5, 6],
[1, 2]
]);
mp.forEach((value, index, array) => {
console.log(value, index, array)
})
输出:
2 1 Map(3) {1 => 2, 3 => 4, 5 => 6}
4 3 Map(3) {1 => 2, 3 => 4, 5 => 6}
6 5 Map(3) {1 => 2, 3 => 4, 5 => 6}