Map

  • Map 是一组键值对的结构,和 JSON 对象类似。

  • Map的key值不仅可以是字符串还可以是对象。

    1
    2
    3
    4
    let a = {b:1}
    let map = new Map()
    map.set(a,111)
    map.get(a) // 111
  • Map中一个key只能对应一个value,多次对一个key放入value,后面的值会把前面的值覆盖掉

    1
    2
    3
    4
    var map =new Map
    map.set('Amy',"女")
    map.set('Amy',"男")
    map.get('Amy') //男
  • Map中的常用语法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    let map = new Map();

    //添加key和value值
    map.set('Amy','女')
    map.set('liuQi','男')

    //是否存在key,存在返回true,反之为false
    map.has('Amy') //true
    map.has('amy') //false

    //根据key获取value
    map.get('Amy') //女

    //删除 key为Amy的value
    map.delete('Amy')
    map.get('Amy') //undefined 删除成功

Set

  • Set 对象类似于数组,且成员的值都是唯一的

  • 最常用来去重使用

    1
    2
    3
    var arr=[1,3,4,2,5,1,4]
    // 这里原本是一个对象用了es6的语法 转化成了数组,就是转化数组之前已经过滤掉了重复的元素了
    var arr2=[...new Set(arr)] //[1,3,4,2,5]
  • Set常用语法如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var set = new Set([1,2,3,5,6]) 
    console.log(set) // {1, 2, 3, 5, 6}

    //添加元素到Set中
    set.add(7) //{1, 2, 3, 5, 6, 7}

    //删除Set中的元素
    set.delete(3) // {1, 2, 5, 6, 7}

    //检测是否含有此元素,有为true,没有则为false
    set.has(2) //true

异同

  • 初始化需要的值不一样,Map需要的是一个二维数组,而Set 需要的是一维 Array 数组
  • Map 和 Set 都不允许键重复
  • Map的键是不能修改,但是键对应的值是可以修改的;Set不能通过迭代器来改变Set的值,因为Set的值就是键。
  • Map 是键值对的存在,值也不作为健;而 Set 没有 value 只有 key,value 就是 key