ES6(Set,map)

1. set定义及特征

        在js中Set对象允许存储任何类型的唯一值,无论是原始值或者是对象引用。

        顶层数据结构不具备key->vakue 特征,内部会自动加index序列 

        可以存储不同类型的任何数据

如何理解唯一性:对于原始数据类型(Boolean,number,string,null,undefined)如果存储相同值则只会保存一个,对于引用类型做“===”判断即引用地址完全相同则只会存一个。

 let set = new Set();  

  //a,b属于object 值完全相同

      let a = {

          name:"cc",

          age:22

      };

      let b = {

          name:"cc",

          age:22

      };

     

  //c,d属于number类型 值完全相同

      let c = 0,d = 0;

  //e,f 属于Date类型,值相同

      let e=f = new Date();

      set.add(a);

      set.add(b);

      set.add(c);

      set.add(d);

      set.add(e);

      set.add(f);

      a= "abc";

      b = {

          name:"cc",

          age:20

      }

      set.add(a);

      set.add(b);

      console.log(set);

2.set 方法

        使用场景,数组去重,交集,并集,差集等操作。

    size属性: 返回集合的元素个数。(类似数组的长度length)

    add(value)方法: 向集合中添加一个元素value。注意:如果向集合中添加一个已经存在的元素,不报错但是集合不会改变。

    delete(value)方法: 从集合中删除元素value。

    has(value)方法: 判断value是否在集合中,返回true或false.

    clear()方法: 清空集合。

3.map

   map定义及特征

        Map 对象保存键值对,任何值(对象或者原始值)都可以作为一个键或一个值

  Map 常用属性及增删改差方法:

    size: 属性,取出字典的长度

    set(key, value):方法,向字典中添加新元素

    get(key):方法,通过键查找特定的数值并返回

    has(key):方法,判断字典中是否存在键key

    delete(key):方法,通过键 key 从字典中移除对应的数据

    clear():方法,将这个字典中的所有元素删除

4.WeakSet     

 和Set结构类似,也是不重复的值的集合,但是WeakSet的成员只能是对象

  WeakSet的API:add()增 delete()删除 has()是否存在

  注意:ws没有size属性,不可遍历。因为WeakSet的成员都是弱引用,随时可能消失,成员是不稳定的103.

  用处:

    1.使用weakSet存储DOM节点,就不用担心节点从文档移除时,会引发内存泄漏(即在被移除的节点上绑定的click事件)

    2.  方法对实例的引用,不会被计入内存回收机制,所以删除实例的时候,不用考虑方法,也不会出现内存泄漏。

5.WeakMap

   WeakMap与Map的区别:

    WeakMap对象是一组键值对的集合,其中的键是弱引用对象,而值可以是任意。

    注意:WeakMap弱引用的只是键名,而不是键值。键值依然是正常引用的。

  WeakMap 中,每个键对自己所引用对象的引用都是弱引用,在没有其他引用和该键引用同一对象,这个对象将会被垃圾回收(相应的key则变成无效的),所以,WeakMap 的 key 是不可枚举的。

猜你喜欢

转载自blog.csdn.net/weixin_62364503/article/details/128186715
今日推荐