map集合
程序员文章站
2022-03-20 11:41:39
...
map集合的意义
map集合专门用于存储多个键值对数据。
诶,明明我们可以用对象来做这件事情,为什么还要用map集合呢?
对象存储键值对的问题
- 键名只能是字符串
- 获取数据的数量不方便
- 键名容易跟原型上的名称冲突
const newObj = {
name:'abc',
age:123
};
console.log(Object.keys(newObj));
创建map
new Map(); //创建一个空的map
new Map(iterable); //创建一个具有初始内容的map,初始内容来自于可迭代对象每一次迭代的结果,但是,它要求每一次迭代的结果必须是一个长度为2的数组,数组第一项表示键,数组的第二项表示值
后续操作
- size:只读属性,获取当前map中键的数量
- set(键, 值):设置一个键值对,键和值可以是任何类型
- 如果键不存在,则添加一项
- 如果键已存在,则修改它的值
- 比较键的方式和Set相同
- get(键): 根据一个键得到对应的值
- has(键):判断某个键是否存在
- delete(键):删除指定的键
- clear(): 清空map
遍历
- for-of,每次迭代得到的是一个长度为2的数组
- forEach,通过回调函数遍历
- 参数1:每一项的值
- 参数2:每一项的键
- 参数3:map本身
例子
1.创建
const mp1 = new Map([['a',1],['b',2],['c',3]]);
const obj = {};
mp1.set(obj, 111);
mp1.set('a', 'abc');
mp1.set(obj, 222);
console.log(mp1);
console.log('总数:', mp1.size);
console.log('get("a")', mp1.get('a'));
console.log('has("a")', mp1.has('a'));
2.遍历、和数组互相转换
const mp = new Map([
["a", 3],
["c", 10],
["b", 4],
["c", 5]
]);
const result = [...mp];
console.log(result);
for(const [key, value] of mp){
console.log(key, value);
}
mp.forEach((value, key, mp) => {
console.log(value, key, mp);
})