• 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结构是允许的

  • 相关阅读:
    844. Backspace String Compare
    【Python21天学习挑战赛】-爬虫(B站)程序示例
    【设计模式】7、decorate 装饰模式
    前端发送复杂JSON数据,后端接收方式
    前端爱心代码跟个风
    不花钱几分钟让你的站点也支持https
    交互与前端10 Tabulator+Flask开发日志007
    Knapsack Problem
    原型设计模式
    unity工程参照以及评价(B)
  • 原文地址:https://blog.csdn.net/ShenWangNian/article/details/130874156