js中Map集合的属性和使用

255 阅读2分钟

这是我参与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中的各项,输出的是数组形式的值,整体过程即输出结果如下图

22222222222222.png

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'

1212121212.PNG

size()

  • 这个方法就是判断Map的长度的,没什么好说的