Set集合与Map集合(七)

// Set集合与Map集合
        
        // Set集合
        // Set类型是一种无序列表,其中含有一些相互独立的非重复值
        // Set集合转换为数组

        /*let set = new Set([1, 4, 2, 3, 3, 3, 4, 5]), array = [...set];

        console.log(array)

        // 注: 将对象存储在Set的实例与存储在变量中完全一样,只要Set实例中的引用存在,垃圾回收机制就不能释放该对象中的内存空间
        let set = new Set(),
            key = {};
        set.add(key);
        console.log(set.size);   // 1
        // 移除原始的引用
        key = null;
        console.log(set.size); //1

        // 重新取出原始引用
        key = [...set][0];
*/

        // WeakSet (弱引用Set集合)
        // 只存储对象的弱引用,并且不可以存储原始值。集合中的弱引用如果是对象唯一的引用,则会被回收并释放相应内存

        
        /*let set = new WeakSet();
        set.add(12);
        console.log(set.has(12)) // 报错*/
        
        // Set 与  WeakSet 的区别
        // 1. 在WeakSet 的实例中,如果向add()、has()和delete()这三个方法传入非对象参数都会导致程序报错
        // 2. WeakSet 集合不可迭代,所以不能被用于for-of 循环
        // 3. WeakSet 集合不暴露任何迭代器(例如keys() 和 values()方法), 所以无法通过程序本身来检测其中的内容
        // 4. WeakSet 集合不支持forEach() 方法
        // 5. WeakSet 集合不支持size()方法

        
        
        // Map 集合
        // 键名的等价性判断都是通过Object.is() 方法实现的
        
        // map构造函数传入数组初始化一个Map集合

        // let map = new Map([["name", "wujiahui"], ["age", "20"]]);
        
        /*let map = new Map(),
            key =  { name: "wujiahui"}

        map.set(key, "123");
        map.set('name', 'wujiahui')
        console.log(map.size)
        map.forEach(function(value, key, ownerMap){
            console.log(key + " " + value)
        })
        key = null;

        console.log(map.size)

        map.forEach(function(value, key, ownerMap){
            console.log(key + " " + value)
        })*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值