• es6新增-map数据结构


    js中object痛点:

    map诞生背景:

    概括:

    实例方法:

    遍历方法:

    WeakMap与Map的区别有两点


    js中object痛点:

    JavaScript的对象(Object),本质上是键值对的集合(hash结构)

    对象只能用字符串当作键,如果不是字符串,内部会调用toString()转为字符串

    map诞生背景:

    为了解决这一问题,es6提供了Map数据结构,这个构造函数

    类似于对象,也是键值对的集合,但“键”的范围不限于字符串,键可以是任意数据类型

    概括:

    为了弥补object只能用字符串作为键(其他类型也会被内部转换为字符串)的缺点,es6提出了map构造函数,和object的区别在于map的键可以是任意类型

    实例方法:

     size:成员数量(键值对的个数)

    set(key,value):添加/修改,返回当前map对象本身

    get(key):获取,读取key对应的键值,如果key不存在。返回undefined

    has(key):key是否在Map()对象中,返回布尔值

    delete(key):删除key,返回true,如果删除失败,返回false

    clear():清空

    代码示例:

    const map = new Map()

    map

      .set(2022,"赚钱多多")

      .set("target","脱单不脱发")

    console.log(map.size) 2

    console.log(map.get(2022)) 赚钱多多

    console.log(map.get(2021)) undefined

    console.log(map.has(2022)) true

    console.log(map.has(2021)) false

    console.log(map.has(2022)) true

    console.log(map.has(2021)) false

    map.clear()

    console.log(map.size) 0

     

     

    遍历方法:

    keys():返回键名的遍历器

    values():返回键值的遍历器

    entries():返回键值对的遍历器

    forEach():遍历Map的所有成员

    示例代码:

    遍历整个map(键值对)

    for(let item of map){ console.log(item) }

    for(let [key,value] of map){ console.log(key,value) }

    等同于

    for(let item of map.entries){ console.log(item) }

    遍历键

    for(let item of map.keys()){ console.log(item) }

     遍历值

    for(let item of map.values()){ console.log(item) }

    WeakMap与Map的区别有两点

    1. WeakMap只接受对象作为键名(null除外),不接受其他类型的值作为键名。

    2.WeakMap的键名所指向的对象,不计入垃圾回收机制。

    3.都是键值对形式,WeakMap没有size

    const map = new WeakMap(); 

    map.set(1,2) 报错:无效的值作为了map的key

    map.set(Symbol(),2) 报错:无效的值作为了map的key

    map.set(null,2) 报错:无效的值作为了map的key

     map.set([],{})

    map.set(document,2022)

    值没有要求,键有要求

  • 相关阅读:
    深度学习基础-1
    数学——图形题
    2024.08.07校招 实习 内推 面经
    返回引用类型的函数指针(c++)
    javascript复习之旅 2.2 typeof
    《WEB前端框架开发技术》HTML5响应式旅游景区网站——榆林子州HTML+CSS+JavaScript
    SI522国产13.56MHz读卡NFC芯片QFN32兼容替代RC522
    【数据结构】迷宫问题DFS非递归(c语言实现)
    09 -- 回文对
    【虚幻引擎UE】UE4/UE5 功能性插件推荐及使用介绍
  • 原文地址:https://blog.csdn.net/m0_65912225/article/details/126018433