Map是一组键值对的结构,和JSON对象类似。
(1)Map数据结构如下
这里我们可以看到的是Map的数据结构是一个键值对的结构
(2)key不仅可以是字符串还可以是对象
varobj={name:"小如",age:9}letmap=newMap()map.set(obj,"111")打印结果如下
(3)Map常用语法如下
//初始化`Map`需要一个二维数组(请看Map数据结构),或者直接初始化一个空`Map`letmap=newMap();//添加key和value值map.set('Amy','女')map.set('liuQi','男')//是否存在key,存在返回true,反之为falsemap.has('Amy')//truemap.has('amy')//false//根据key获取valuemap.get('Amy')//女//删除key为Amy的valuemap.delete('Amy')map.get('Amy')//undefined删除成功(4)一个key只能对应一个value,多次对一个key放入value,后面的值会把前面的值覆盖掉
varmap=newMapmap.set('Amy',"女")map.set('Amy',"男")console.log(map)打印结果如下
Set对象类似于数组,且成员的值都是唯一的
(1)打印出的数据结构如下
这里打印出来是一个对象
(2)最常用来去重使用,去重方法有很多但是都没有它运行的快。
vararr=[1,3,4,2,5,1,4]//这里原本是一个对象用了es6的语法转化成了数组,就是转化数组之前已经过滤掉了重复的元素了vararr2=[...newSet(arr)]//[1,3,4,2,5](3)Set常用语法如下
(2)初始化需要的值不一样,Map需要的是一个二维数组,而Set需要的是一维Array数组
(3)Map和Set都不允许键重复
(4)Map的键是不能修改,但是键对应的值是可以修改的;Set不能通过迭代器来改变Set的值,因为Set的值就是键。
(5)Map是键值对的存在,值也不作为健;而Set没有value只有key,value就是key;