Set

Set是ES6引入新的数据结构,类似数组,但是它的元素成员是唯一的,Set本身是一个构造函数,可以直接用来生成一个Set数据结构:

const set = new Set(9);

因为它的每一个元素都是唯一的,那就可以给数组去重:

const arr = new Set([1,2,3,3,4,4,5]);

当然,去重后,返回的是一个Set结构的值,需要用Array.from()转化,才能得到我们想要的数组。

Set属性和方法

  1. 构造函数,默认就是Set函数
  2. size,返回Set实例的成员的数量
  3. add(item),添加set成员
  4. delete(item),删除set值
  5. has(item),判断一个值是否是set的成员
  6. clear(),清空set的值。
  7. keys(),遍历
  8. values()
  9. entries()

WeakSet

和Set类似,每一个成员都是唯一的,但是WeakSet的成员只能是对象,不能有其他类型的值。

WeakSet可以接受一个数组或者类数组的对象作为参数,如果入参是一个数组的话,那么成为WeakSet成员的是数组的元素,而不是数组本身,所以作为参数的数组元素只能是对象。

WeakSet有3个属性:

  1. add(vlaue),添加成员
  2. has(value),
  3. delete(value)

因为没有size,WeakSet不能遍历。

Map

对象,本质上就是键值对的集合,Map数据结构,类似对象,也是键值对的集合,但是它的key不限于字符串,各种类型的值都可作为key。

const map = new Map();
map.set(1,90);
console.log(map.get(1)); // 90

Map属性

  1. size(),返回map成员总数
  2. set(key,value)
  3. get(key)
  4. has(key)
  5. delete(key)
  6. clear()

方法

  1. keys()
  2. values()
  3. entries()
  4. forEach