Map 对象
Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。
Map 中的 key
1.key可以是一个字符串
{ let m1 = new Map();
let map = new Map()
let keystr = 'key'
map.set(keystr,'和keystr相对应的值')
console.log(map.get(keystr)); // 和keystr相对应的值
// 因为keystr就等于‘key
console.log(map.get('key')); // 和keystr相对应的值
// 另一种方式
m1.set('name','王路飞');
m1.set('age','18');
m1.set('money','0');
let niname = m1.get('name');
console.log(niname);
}
2.key可以是一个对象
{
let myMap = new Map();
let keyObj = {};
myMap.set(keyObj,'和键key相连的值');
let r1 = myMap.get(keyObj);
console.log(r1);
//输出是 和键key相连的值
let r2 = myMap.get({});
console.log(r2);
// undefined, 因为 keyObj !== {}
}
3.key可以是一个函数
{
let myMap = new Map();
let keyFun = function(){};
myMap.set(keyFun,'和键值对相关的函数');
let r1 = myMap.get(keyFun);
console.log(r1);
// 输出为 和键值对相关的函数
let r2 = myMap.get(function(){});
// undefined, 因为 keyFunc !== function () {}
}
Map 的迭代
对 Map 进行遍历,以下两个最高级。
for...of
{
let myMap = new Map();
myMap.set(0,'一号');
myMap.set(1,'二号');
myMap.set(2,'三号');
myMap.set(3,'四号');
for(let [key,value] of myMap){
console.log(key,'==',value);
}
// keys()方法 (遍历出所有的key值)
for(let key of myMap.keys()){
console.log(key);
}
// values()方法 (遍历出所有的value值)
for(let value of myMap.values()){
console.log(value);
}
}
forEach()
{
let myMap = new Map();
myMap.set(0,'一号');
myMap.set(1,'二号');
myMap.set(2,'三号');
myMap.set(3,'四号');
myMap.forEach(function(v,k){
console.log(v,'=',k);
})
myMap.forEach((v,k)=>{
console.log(v,'==',k);
})
}
Map 对象的操作
Map 与 Array的转换
{
// 数组转Map对象
let m1 = [['id','1001'],['name','啊六']];
let Mapm1 = new Map(m1);
console.log(Mapm1);
// Map对象转数组;
let Arrm1 = Array.form(Mapm1);
console.log(Arrm1);
}
Map的克隆
{
let m1 = new Map([['key1','value1'],['key2','value2']]);
let m2 = new Map(m1);
console.log(m1,m2);
console.log(m1===m2);
// 打印 false。 Map 对象构造函数生成实例,迭代出新的对象
}
Map的合并
{
let m1 = new Map([[1,'one'],[2,'two'],[3,'thrre']]);
let m2 = new Map([[1,'frist'],[2,'last'],[4,'four']]);
// 合并两个Map对象时,如果有相同的键值,则后面的会覆盖前面的
let m3 = new Map([...m1,...m2]);
console.log(m3);
//Map的size方法
//Map对象的属性,用来统计对象中的个数
console.log(m3.size);
// has()方法,Map对象的属性,用来检测一个对象是否存在
if(m3.has(5)){
console.log('有');
}else{
console.log('没有');
}
// delete方法,用来删除对象中的一个成员
m3.delete(1);
console.log(m3);
//clear()方法,清空对象
m3.clear();
console.log(m3);
}