这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战
前言
这两天做算法题连这用了好几次js中的Map集合,开始的时候用的迷迷糊糊的,今天抽个时间对js中的Map来做个总结
Map的声明
- new Map()
- 例子:let map = new Map()
- 其中()中可以写数组或者对象,或者是键值对
clear()
- 用于清空Map,清空之后map的size为0
- 例:map.clear()
delete()
- 用于删除Map中某个key
- 例:map.delete('***')
entries()
- 这个方法返回的迭代器的迭代顺序和Map对象的插入顺序相同
- 例:
var map = new Map();
map.set(0, 'c');
map.set(1, 'b');
map.set(2, 'a');
var mapIter = map.entries();
bb=3
while(bb>0){console.log(mapIter.next().value); bb--}
- 上面代码就是entries()方法的用法,当一个Map使用了entries()方法,就可以使用mapIter.next().value来依次取出mapIter中的各项,输出的是数组形式的值,整体过程即输出结果如下图
forEach()
- 可以拿到Map中的各个键值对
- 例子:
map.forEach((value,key)=>{
//在这里我们就可以拿到键和值,其中value就是值,key就是键
})
Map的循环
- Map的循环除了用forEach还可以用for...of...
- 例子:
for(let item of map){
//这里的item是一个数组,即[key,value]的形式,因此我们可以直接写成下面这样的形式
}
for(let [key,value] of map){
//这里可以直接拿key和value使用
if(value===1){
return key
}
}
get()
- 这是我们在js中最常用到的Map对象的一个方法,通过键来获取对应的值
- 例:
a = new Map([
[0,'a'],
[1,'b'],
[2,'c'],
])
a.get(0) //a
has()
- 用于判断Map中是否含有某个键,有返回true,否则返回false -例
a = new Map([
[0,'a'],
[1,'b'],
[2,'c'],
])
a.has(0) //true
keys()
- 这也是一个迭代器,迭代的内容是各个项的键,其顺序也是Map对象的插入数据顺序
- 例
var map = new Map();
map.set(0, 'c');
map.set(1, 'b');
map.set(2, 'a');
var mapIter = map.keys();//这时mapIter中包含了所有的键,可以通过for...of...取各个键,也可以通过mapIter.next().value来取,输出的也是键值
values()
- 这也是一个迭代器,里面的内容是各项的值,其顺序也是Map对象的插入数据的顺序
- 例
var map = new Map();
map.set(0, 'c');
map.set(1, 'b');
map.set(2, 'a');
var mapIter = map.values();//这时mapIter中包含了所有的值,可以通过for...of...取各个值,也可以通过mapIter.next().value来取,输出的也是值
set()
- 这个也使用频率比较高的方法,用于给Map插入值或者更新值,如果Map中不存在这个键值就是插入,如果已经存在就是更新
- 例:
var map = new Map();
map.set(0, 'a');//0是键,值是'a'
map.set(0,'d');//因为0这个键已经存在了,所以0对应的'c'就更新成了'd'
size()
- 这个方法就是判断Map的长度的,没什么好说的