标签:delete 添加元素 可见 重复 map web页面 释放 获取信息 weak
Set类型是一种有序列表,其中含有一些相互独立的非重复,通过Set集合可以快速访问其中的数据,更有效地追踪各种离散值。
调用new Set()创建Set集合,调用add()方法向集合添加元素,访问集合的size属性可以获取集合中目前的元素数量,访问has()方法可以检测Set集合中是否存在某个值。抵用delete()方法可以移除Set集合中的某一个元素,调用clear()方法会移除集合中的所有元素。
let set=new Set(); set.add(5); set.add(‘5‘); set.add(5); console.log(set.size); // 2,Set有自动去 console.log(set.has(5)); // true set.delete(5); console.log(set.has(5)); //false set.clear(); console.log(set.size); //0
forEach()方法的回调函数接受以下3个参数:
1)Set集合中下一次索引的位置
2)与第一个参数一样的值
3)被遍历的Set集合本身
let set=new Set([1,2]); set.forEach(function(value,key,ownerSet){ console.log(key+‘‘+value); console.log(ownerSet===set); //1 1 //true //2 2 //true
将数组转换为Set集合的过程很简单,只需给Set构造函数传入数组即可;将Set集合在转回数组的过程同样很简单,可以运用展开运算符(...)
let set=new Set([1,2,3,3,4,5,6,6]),array=[...set]; console.log(set);//[1,2,3,4,5,6]
将对象存储在Set的实例与存储在变量中完全一样,只要Set实例中的引用存在,垃圾回收机制就不能释放该对象的内存空间,这是WeakSet集合可以解决问题。
用WeakSet构造函数可以创建WeakSet集合,集合支持三种方法:add()、has()、delete()。
let set=new WeakSet(), key={}; set.add(key); console.log(set.has(key));//true set.delete(key); console.log(set.has(key));// false
如果只需要跟踪对象引用,优选WeakSet。
Map类型是一种储存着许多键值对的有序列表,其中的键名和对应的值支持所有的数据类型。
添加新元素可以调用set()方法并分别传入键名和对应值作为两个参数;如果要从集合中获取信息,可以调用get()方法。
let map =new Map(); map.set("title","zhelishi"); map.set("year",2017); console.log(map.get("title"));//‘zhelishi‘ console.log(map.get("year"));//2017
let map=new Map(); map.set("name","jiaxiaonuo"); map.set("age",24); console.log(map.size);//2 console.log(map.has("name"));//true console.log(map.has("age"));//true console.log(map.get("name"));//"jiaxiaonuo" console.log(map.get("age"));//24 map.delete("name"); console.log(map.has("name"));//false console.log(map.get("name"));//undefined console.log(map.size);//1 map.clear(); console.log(map.size);//0
初始化Map集合
let map=new Map([["name","jiaxiaonuo"],["age",24]]); console.log(map.has("name"));//true console.log(map.get("name"));//jiaxiaonuo console.log(map.size);//2
Map集合的forEach()方法接受三个参数:
let map=new Map([["name","jiaxiaonuo"],["age",24]]); map.forEach(function(value,key,owenMap){ console.log(key+‘‘+value); console.log(owenMap===map); //name jiaxiaonuo //true //age 24 //true })
该集合的最大用途是保存Web页面中的DOM元素。它是一种存储着许多键值对的无序列表,列表的键名必须是非null类型的对象,键名对应的值则可以是任意类型。通过set()方法添加数据,通过get()方法获取数据。
let map=new WeakMap(), element=document.querySelector(".element"); map.set(element,‘jiaxiaonuo‘); let value=map.get(element); console.log(value); //jiaxiaonuo element.parent().removeChild(element); element=null;
该集合支持has()、delete()方法
let map=new WeakMap(), element=document.querySelector(".element" map.set(element,"jiaxiaonuo"); console.log(map.has(element)); //true console.log(map.get(element)); //jiaxiaonuo map.delete(element); console.log(map.has(element)); //false console.log(map.get(element));//undefined
集合初始化
let key1={},key2={}, map=new Map([[key1,"hello"],[key2,"world"]]); console.log(map.has(key1)); //true console.log(map.get(key1)); //hello console.log(map.has(key2)); // true console.log(map.get(key2));//world
当数据再也不可访问后集中存储的相关引用和数据都会被自动回收,这有效地避免了内存泄漏的问题,从而优化了内存的使用。相对Map集合而言,Weak Map集合对用户的可见度更低,气不支持通过forEach()方法、size属性及clear()方法来管理集合中的元素。
标签:delete 添加元素 可见 重复 map web页面 释放 获取信息 weak
原文地址:http://www.cnblogs.com/jiaxiaonuo/p/7307837.html