目录
一、Set
set中的元素不可以重复
常用方法
- 添加 add
const set = new Set(); set.add(1); set.add(100); set.add(50); set.add(1); set.add({}); set.add({}); console.log(set) // { 1, 100, 50, {}, {} }
在内存中对象保存的形式是内存地址,两个对象的内存地址不同
- 删除 delete
const set = new Set(); set.add(1); set.add(100); set.add(50); set.delete(100) console.log(set) // { 1,50}
- 判断元素是否存在 has
const set = new Set(); set.add(1); set.add(100); set.add(50); console.log(set1.has(330)) //false console.log(set1.has(100)) //true
- 获取元素个数 has
const set = new Set(); set.add(1); set.add(100); console.log(set.size) //2
- 清除所有元素 clear
const set = new Set(); set.add(1); set.add(100); set.clear()
- 遍历 forEach、for...of...
set.forEach((item) => { console.log(item); }); for(let i of set){ console.log(i) }
使用场景
数组去重
const arr = [22, 10, 3, 330, 1, 33];
const set1 = new Set(arr);
console.log(set1);
const newArr = Array.from(set1); //将set转换为数组
const newArr1 = [...set1]; //将set转换为数组
console.log(newArr, newArr1);
二、WeakSet
元素不可以重复
与Set的区别
只能存放对象类型
对元素的引用是弱引用,如果没有其他引用对某个对象进行引用,GC可以对该对象进行回收
不可以遍历
三、Map
存储映射关系
允许对象类型作为key值
常用方法
- 添加 set
const map = new Map(); const obj = { name: "lim" }; map.set(obj, "a"); map.set({}, "b"); console.log(map); // { { name: 'lim' } => 'a', {} => 'b' }
- 获取元素 get
const map = new Map(); const obj = { name: "lim" }; map.set(obj, "a"); map.set({}, "b"); console.log(map.get(obj)); //a
- 删除 delete
const map = new Map(); const obj = { name: "lim" }; map.set(obj, "a"); map.set({}, "b"); console.log(map); map.delete(obj); console.log(map);
- 获取元素的个数 size
- 判断元素是否存在 has
- 清除所有元素 clear
- 遍历 forEach、for...of...
map.forEach((item, key) => { console.log(item, key); }); for (let i of map) { console.log(i); }
四、WeakMap
以键值对存在
WeakMap 的key只能是对象
key对对象的引用是弱引用,如果没有其他引用对某个对象进行引用,GC可以对该对象进行回收
方法
set 添加
get 获取某个值
has
delete