ES6 Map 对象

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);
}

部分内容来源于菜鸟教程,侵权联删(上面所有帖子)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值