1.Set 新的数据结构 不会计入重复值,所以可以用来数组去重 可以加入数组(或者具有 iterable 接口的其他数据结构),size属性确定长度
const s = new Set([1,2,4,4])
[...s] //[1,2,4]
set内部的数字判断,认为NaN是等于自己本身的
相关方法
add(value) 添加值,然后返回set结构本身
delete(value) 删除某个值,返回布尔值,判断删除是否成功
has(value) 返回一个布尔值,表示该值是否为Set
的成员。
clear() 清除Set内的全部成员,没有返回值
keys() 返回键名的遍历
values() 返回键值的遍历
entries() 返回键值对的遍历
forEach() 遍历全部成员
默认使用values()遍历
WeakSet
基本与Set数据结构类似,区别是没法进行遍历,没有size属性;成员只能是对象,而且是弱引用(垃圾回收机制不会考虑WeakSet对对象的引用),可以避免出现内存泄漏的情况。
内存泄漏:没有取消引用,内存无法释放
2.Map 新的数据结构 与对象类似,区别是对象的键名只能是字符串,Map的键名可以是任何类型
不仅仅是数组,任何具有 Iterator 接口、且每个成员都是一个双元素的数组的数据结构都可以当作Map
构造函数的参数。这就是说,Set和Map
都可以用来生成新的 Map。
属性,相关方法
size属性用来确定Map的长度
set(key,value) 设置值,如果key存在就更新,返回整个数据结构。
get(key) 返回key对应的键值,如果不存在则返回undefiend
has(key) 返回布尔值,判断键是否存在
delete(key) 返回布尔值,表示删除是否成功
clear() 清除全部成员 没有返回值
keys() 返回键名的遍历
values() 返回键值的遍历
entries() 返回键值对的遍历
forEach() 遍历全部成员
默认使用entries()遍历
Map结构转数组结构,可以使用扩展运算符...
WeakMap
基本与Map数据结构没区别,区别和WeakSet类似。