ES6:Map数据结构

一、Map

1、概念:

        一种键值对结构,但键的类型可以是各种类型的值,不限于字符串

        是一对Object结构的扩展

2、初始化:

        var map = new Map();

        //得到类似这样的结构{"name" => "张啊", "title" => "ES6"}

        var map2 = new Map([['name','张啊'],['title','ES6']]);

3、属性、方法:

  • map.size:得到内部成员数量
  • map.set(key,value):设置key对应的值
  • map.get(key):获取key对应的值
  • map.has(key):是否有这个key
  • map.delete(key):删除
  • map.clear():清空

4、遍历方法:

  • map.keys():返回键名遍历器(Iterator),然后使用for...of遍历
  • map.values():返回键值遍历器(Iterator),然后使用for...of遍历
  • map.entries():返回所有成员组成的遍历器(Iterator),然后使用for...of遍历
  • map.forEach(function(value,key,map){...}):直接遍历所有成员

5、注意:

1、如果一个键被多次赋值,后面的会覆盖前面的值

    (当键是对象时,相同的概念,是指键在内存上的地址相同)

    (如果Map的键是简单数据类型【数字、字符串、布尔值】时,只要两个值严格相等,那么就是同一个键)

2、如果读取一个未知的键,返回undefined

二、WeakMap

1、概念:

        1、只接受对象作为键名的Map,

        2、键名是对象的弱引用,所指向的对象不计入垃圾回收机制,当对象被回收后,WeakMap自动移除对应的键值对

2、应用的场合:

        它的键所对应的对象可能会在将来消失

        典型的场合就是Dom节点作为键名

3、初始化:

        var wm = new WeakMap();

4、方法:

        wm.set(key,value)

        wm.get(key)

        wm.has()

        wm.delete()

注意:

        1、不可遍历

        2、没有size属性

        3、不支持clear,不能清空

猜你喜欢

转载自my.oschina.net/lcl6659/blog/1802904
今日推荐