2.Map和WeakMap用法

    // Map的key键名可以是各种类型的值

    let m = new Map([

        ["name", "王致和"],

        ["gender", 1]

    ])

    console.log(m);//Map(2) {'name' => '王致和', 'gender' => 1}

    // set()方法作用:给实例设置一对键值对,返回map实例。

    let ms = new Map()

    ms.set("name", "老干妈")

    ms.set(1, 2)

    console.log(ms);//Map(2) {'name' => '老干妈', 1 => 2}

    ms.set(null, 3)

    ms.set(undefined, 4)

    ms.set({}, 5)

    console.log(ms);//Map(5) {'name' => '老干妈', 1 => 2, null => 3, undefined => 4, {…} => 5}

    // 如果后面set的数据中有相同的属性,就会覆盖掉前面的

    ms.set("name", "王致和")

    console.log(ms);//Map(5) {'name' => '王致和', 1 => 2, null => 3, undefined => 4, {…} => 5}

    // get()方法作用:获取指定键名的键值,返回键值。

    console.log(ms.get("name"));//王致和

    console.log(ms.get(1));//2

    console.log(ms.get(null));//3

    // delete ( )方法作用:删除指定的键值对,删除成功返回:true,否则返回:false。

    ms.delete("name")

    console.log(ms);//Map(4) {1 => 2, null => 3, undefined => 4, {…} => 5}

    ms.delete(null)

    ms.delete(1)

    console.log(ms);//Map(2) {undefined => 4, {…} => 5}

    // 跟Set结构一样,Map结构也提供了clear()方法,让你一次性删除所有键值对。

    ms.clear()

    console.log(ms);//Map(0) {size: 0}

    // has()方法作用:判断Map实例内是否含有指定的键值对,有就返回:true,否则返回:false。

    console.log(m.has('name'));//true

    console.log(m.has(1));//false

    // entries()方法作用:返回实例的键值对遍历器。

    for (let [key, value] of m.entries()) {

        console.log(key + '' + value);//name王致和        gender1

    }

    // keys()方法:返回实例所有键名的遍历器。

    for (let key of m.keys()) {

        console.log(key);//name     gender

    }

    // values() 方法:返回实例所有键值的遍历器。

    for (let value of m.values()) {

        console.log(value);//王致和    1

    }

    // forEach遍历每一个键值对:

    m.forEach(function (value, key) {

        console.log(key + ':' + value);//name:王致和       gender:1

    })

    // size:获取实例的成员数。

    console.log(m.size);//2

    // WeakMap结构和Map结构很类似,不同点在于WeakMap结构的键名只支持引用类型的数据。哪些是引用类型的值呢?比如:数组,对象,函数。

    let mx = new WeakMap()

    mx.set([1], 2)

    mx.set({ 'name': 'zhangsan' }, 2)

    function fn(){ }

    mx.set(fn, 2)

    console.log(mx);//WeakMap {ƒ => 2, Array(1) => 2, {…} => 2}

    // WeakMap如果是普通的值类型则不允许。比如:字符串,数字,null,undefined,布尔类型。而Map结构是允许的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值