1、Set

基本用法

ES6提供了新的数据结构Set。她类似数组,但是成员的值是唯一的,没有重复的值。
Set本身是一个构造函数,用来生成Set数据结构。

  1. const set=new Set([1,2,3,2]);
  2. [...set] //[1,2,3]
  3. set.size //3

Set实例的属性和方法

属性

  1. Set.prototype.constructor: 构造函数,默认就是Set函数
  2. Set.prototype.size: 返回Set实例的成员总数

方法

操作方法

  1. Set.prototype.add(value) :添加某个值,返回Set结构本身
  2. Set.prototype.delete(value) :删除某个值,返回一个布尔值,表示是否成功
  3. Set.prototype.has(value) :返回一个布尔值,表示该值是否为Set的成员
  4. Set.prototype.clear() :清除所有成员,没有返回值

看看在判断是否包含一个键上面,Object结构和Set结构的写法不同

  1. //对象的写法
  2. const properties={
  3. 'width': 1,
  4. 'height': 1
  5. }
  6. if(properties[someName]){
  7. // do something
  8. }
  9. //Set的写法
  10. const properties=new Set();
  11. properties.add('width');
  12. properties.add('height');
  13. if(properties.has(someName)){
  14. // do something
  15. }

Array.from方法可以将Set结构转为数组

  1. const items=new Set([1,2,3,4,5]);
  2. const array=Array.from(items);

遍历方法

  1. Set.prototype.keys(): 返回键名的遍历器
  2. Set.prototype.values(): 返回键值的遍历器
  3. Set.prototype.entries(): 返回键值对的遍历器
  4. Set.prototype.forEach(): 使用回调函数遍历每个成员

因为Set结构没有键名,只有键值所以keys和values方法的行为一致

2、WeakSet

3、Map

含义和基本用法

Javascript的对象(Object),本质上是键值对的集合(hash),但是传统上只能用字符串当作键。为了解决这个问题,Es6提供了Map数据结构。类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说object结构提供了“字符串-值”的对应,Map提供了“值-值”的对应。

4、WeakMap