• JavaScript的map方法


    基本API

    使用new关键字和map构造函数创建一个空映射

    const m=new Map();
    
    • 1

    如果想在创建的同时初始化实例,可以给map构造函数传入一个可迭代的对象,需要包含键/值对数组。可迭代对象中的每个键/值对都会按照迭代顺序插入到新的映射实例中:

    const m1=new Map([
    ['key1','1'],
    ['key2','2']
    ])
    console.log(m1.size) //2
    
    • 1
    • 2
    • 3
    • 4
    • 5

    初始化之后可以使用set方法再添加键值对,size属性获取键值对的数量,delete方法和clear删除值,get和has进行查询。

    顺序与迭代

    与object类型的一个主要差别就是,map实例会维护插入的键值对的顺序,可以根据插入顺序进行迭代操作。
    映射实例提供了一个迭代器(iterator),能以插入顺序生成[key,val]形式的数组。可以通过entries()方法(symbol.iterator属性,引用entries())取得这个迭代器:

    const m1=new Map([
    ['key1','1'],
    ['key2','2']
    ])
    console.log(m1.entries===m1[Symbol.iterator]) //true
    
    for(let pair of m1.entries()){
    console.log(pair)
    //[key1,1]
    //[key2,2]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    因为entries是默认迭代器,可以直接对映射实例使用扩展操作,将映射转化为数组:

    const m1=new Map([
    ['key1','1'],
    ['key2','2']
    ])
    console.log(...m1)//[[key1,1],[key2,2]]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    不使用迭代器可使用回调方式,foreach方法传入回调,依次迭代每个键值对

    m1.foreach((val,key)=>console(`${key}-${val}`))
    //key1-1
    //key2-2
    
    • 1
    • 2
    • 3

    单独遍历key和val

    for(let key of m1.keys()){
    console.log(key)//key1 key2
    }
    
    • 1
    • 2
    • 3
    for(let key of m1.values()){
    console.log(key)//1 2
    }
    
    • 1
    • 2
    • 3

    选择map还是object

    对于大多数web开发来说map和object只是个人喜好问题,但是如果看重内存、性能,那么对象和映射之间存在比较显著的区别

    内存占用

    不同浏览器的情况不同,但是给定固定大小的内存,map可以比object多存储50%的键值对左右。

    插入性能

    两个插入键值对消耗差不多,但是插入map在浏览器中稍微快一点儿,如果涉及到大量插入操作,map更好一点

    查找速度

    如果只包含少量键值对,object有时候会比map快。把object当成数组的情况下,浏览器引擎可以进行优化,在内存中 可以使用更高效的布局,这个对map来说是不可能的,如果涉及到很多代码查找操作,object会比map更好

    删除性能

    对于大多数浏览器引擎来说,map的delete操作会更好一些。

  • 相关阅读:
    Hive 安装配置
    java后端开发热部署工具Springloaded
    书写Prompt的经验总结
    Visual Studio 中使用 CMake
    函数计算|如何使用层解决依赖包问题?
    静态路由配置案例
    华为云云耀云服务器L实例评测|部署在线影音媒体系统 Jellyfin
    TransReID | 首次将transformer应用于行人重识别
    LabVIEW在无线设备中的应用
    密码学系列之:PKI的证书格式表示X.509
  • 原文地址:https://blog.csdn.net/weixin_43183219/article/details/126382070