1.Map对象
特点:Map是一组键值对的结构,具有极快的查找速度。
使用场景:Map主要的应用场景在于数组去重和数据存储。用来存储键值对 Key—Value,注意key不能重复,如果一个key对应多个value,那么后面的会覆盖前面的。
使用方法:
初始化Map需要一个二维数组,或者直接初始化一个空Map。Map具有以下方法:
let m=new Map();//初始化一个空Map
m.set("lisa",90);//添加key和value
m.set("tom",74);
console.log(m);//输出结果{'lisa' => 90, 'tom' => 74}
//判断是否存在某个key
m.has("lili");//输出false
m.has("lisa");//输出true
//获取某个key的value
m.get('lisa');//输出90
//删除某个key
m.delete("lisa");
m.get('lisa');//输出undefined
//清楚所有的元素
m.clear();
//获取Map对象的个数
m.size;
//初始化一个二维数组
var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
console.log(m);// 输出结果{'Michael' => 95, 'Bob' => 75, 'Tracy' => 85}
使用for…of获取Map对象中的每一个ke–value
//接上面的例子
//获取每一个项key-value
for(let i of m)
{
console.log(i);
//['lisa', 90]
//['tom', 74]
}
//获取每一项key
for(let i of m.keys())
{
console.log(i);
//lisa
//tom
}
//获取每一项value
for(let i of m.values())
{
console.log(i);
//90
//74
}
//获取键值对
for(let i of m.entries())
{
console.log(i);
//['lisa', 90]
//['tom', 74]
}
将Map对象转换为数组
//现在新建一个Map对象
let m=new Map();//初始化一个空Map
m.set("lisa",90);//添加key和value
m.set("tom",74);
m.set("lili",50);
console.log(m);
//输出结果{'lisa' => 90, 'tom' => 74, 'lili' => 50}
//现在如何把这个Map对象转换成数组呢?
//方法1:使用Array.from()
let arr=Array.from(m);
console.log(arr);
//方法2:使用扩展运算符
let arr=[...m];
console.log(arr);
//以上两种方法,输出结果都是如下一个二维数组
//[['lisa', 90], ['tom', 74],['lili', 50]]
//现在只想获取Map对象的key
let arr=[...m.keys()];
console.log(arr);//返回的是一个一维数组['lisa', 'tom', 'lili']
//只获取Map对象的value
let arr=[...m.values()];
console.log(arr);//返回的是一个一维数组[90, 74, 50]