薛彬的博客 Xue bin's Personal Growth Website

小白学《深入理解es6》--迭代器和生成器

2017-07-23
薛彬

Set集合是一种无重复的列表,通常的做法是检测给定的值在某个集合中是否存在。

Map集合内含多组键值对,集合中每个元素分别存放着可访问的键名和它对应的值,常被用于缓存频繁取用的数据。

ES6中的Set集合

ES6新增的Set类型是一种有序列表,其中含有一些相互独立的非重复值,通过Set集合可以快速访问其中的数据。

创建Set集合并添加元素

调用new Set()创建Set集合,调用add()方法向集合中添加元素,通过size获取元素数量。

let set =new Set();
set.add(5);
console.log(set); // {5}
set.add(5);
console.log(set); // {5}
set.add(6);
console.log(set); // {5,6}
console.log(set.size); // 2

可以通过数组来初始化Set集合,过滤其中重复的值,这就为数组的去重提供了一个方法。

//方法一
function unique(array){
  return Array.from(new Set(array))
}
//方法二
function unique(array){
  return [...new Set(array)]
}

通过has()方法可以检测Set集合中是否存在某个值

移除元素

调用delete()方法可以移除Set集合中的某一个元素,调用clear()方法会移除集合中的所有元素。

Set集合的forEach()方法

forEach的回调函数接受以下3个参数:

  • Set集合中下一次索引的位置
  • 与第一个参数一样的值
  • 被遍历的Set集合本身

将Set集合转换为数组

用展开运算符...可以将数组中的元素分解为各自独立的函数参数。

let set=new Set([1,1,2,3,4,5]);
let array=[...set]
console.log(array); // [1, 2, 3, 4, 5]

Weak Set集合

在Set中,如果存入一个对象,即使这个对象被回收了,Set中还保持着对这个对象的引用,如果希望对象回收后,Set中的引用也被清除,就需要用到Weak Set集合(弱引用Set集合)。

Weak Set集合直接利用构造函数创建,支持add(),has(),delete()三个方法。

let set =new WeakSet();
let key={};
set.add(key);
console.log(set.has(key)); // true
set.delete(key);
console.log(set.has(key)); // false
set.add(key);
key=null;
console.log(set.has(key)); // false

ES6中的Map集合

ES6中,Map类型是一种储存着许多键值对的有序列表,其中的键名和对应的值支持所有的数据类型。

通过set(key,value)方法往Map集合中添加新的元素,通过get(key)获取元素,如果key不存在,则返回undefined

Map集合支持的方法

  • has():检测键名在Map集合中是否存在
  • delete():移除指定键名和值
  • clear():清空Map集合
  • size:包含键值对数量

Map集合的Foreach方法

forEach的回调函数接受以下3个参数:

  • Map集合中下一次索引的位置
  • 值对应的键名
  • 被遍历的Map集合本身

Weak Map集合

未完待续~


评论