Set 数据集合:
Set 集合是一种无重复元素的列表,使用 new Set()方法创建 Set 集合
//向集合添加 5 个元素,只有四个有效,并且2 和字符串’2’不冲突,空对象也不冲突 // let set=new Set(); // set.add(1); // set.add(2); // set.add(2); // set.add("2"); // set.add("c"); // // console.log(set);//Set(0) {} // console.log(set);//Set(4) { 1, 2, '2', 'c' } console.log(set.size); //可以通过构造函数传递参数的方式进行初始化集合 //通过构造参数初始化集合 // let set=new Set([1,2,3,4,5,6]); // console.log(set);//Set(6) { 1, 2, 3, 4, 5, 6 } // 使用 has()方法查找是否存在指定元素,注意 2 和’2’是两个元素,不会隐式转换 // console.log(set.has(2));//true // console.log(set.has("2"));//false //用 delete()删除指定元素、clear()清空元素 // set.delete(2);//删除元素 // console.log(set);//Set(5) { 1, 3, 4, 5, 6 } // set.clear()//清空 // console.log(set);//Set(0) {} //使用...语法,将 Set集合转换为数组 let set=new Set([1,2,3,4,5,6]); //将 set 集合转换为数组 // let arr=[...set]; // console.log(arr);//[ 1, 2, 3, 4, 5, 6 ] //使用 for 或者 forEach 来遍历 Set 集合 // for(let i of set){ // console.log(i);//1 2 3 4 5 6 // } //forEach 变量 //在 Set 集合中 key 和 value 都是值 // set.forEach(function(key,value,set){ // console.log(key+'-'+value); // console.log(set); // }); // Set 集合还提供针对对象的 Weak Set 集合,添加非对象类型会报错; // Weak Set 集合支持 add()、has()和 delete()方法, 不支持遍历,内部隐藏(无法查看内容),不支持 foreach 和 size; // 对于应用场景来说,存放对象的弱引用,不用担心对象被回收后引发的问题 //强引用 let set=new Set(),obj={1:1}; set.add(obj); console.log(set);//Set(1) { { '1': 1 } } 引用存在 //移除引用 obj=null; console.log(set);//Set(1) { { '1': 1 } } 引用仍然存在 //弱引用 let ws=new WeakSet(),obj={1:1}; ws.add(obj); console.log(ws.has(obj));//true 引用存在 //移除引用 obj=null; console.log(ws.has(obj));//false 随着销毁而释放
Map数据合集:
//Map 数据集合,是一种以键值对存储的有序列表 let map=new Map(); map.set("name","苏玮一");//支持set添加 map.set('age', 100); console.log(map);//Map(2) { 'name' => '苏玮一', 'age' => 100 } console.log(map.size);//2 console.log(map.get('name')); //.get 获取 //通过构造函数传递参数的方式进行初始化集合 //通过构造参数初始化集合 // let map=new Map([ // ["name","苏玮一"], // ['age', 100] // ]); // console.log(map);//Map(2) { 'name' => '苏玮一', 'age' => 100 } //使用 has()检测、delete()删除、clear()清空等对 Map 集合的操作; // console.log(map.has('name')); //true // console.log(map.size); //2 // map.delete('name'); //删除 // console.log(map); // map.clear(); //清空 // console.log(map); //使用 forEach 来遍历 Map 集合 map.forEach((value, key, m) => { console.log(key + '-' + value); console.log(m); }); // //弱引用 let wm = new WeakMap(), obj = {}; wm.set(obj) console.log(wm.has(obj));//true //移出引用 obj = null; console.log(wm.has(obj));//回收了 false
                    
                
                
            
        
浙公网安备 33010602011771号