怎么遍历Set集合

锡瓦塔内霍

我们可以使用传统的forEach()函数来遍历Set数据结构。

如果我们用forEach()函数来遍历数组的话,第一个参数是数组里的每一个元素,第二个参数是元素的索引(从0开始)。

所以对于Set数据结构,也应该是这样。

不过Set中没有索引的概念,它实际上是键和值相同的集合,第二个参数表示的是键。也就是说第一个参数和第二个参数一模一样。

let set = new Set([1,2,'hello']);
set.forEach((item,index) => {
  console.log(item,index);
});
// 1 1
// 2 2
// hello hello

我们除了可以用forEach()函数,还可以使用以下3种函数对Set实例进行遍历。

①keys():返回键名的遍历器

②values():返回键值的遍历器

③entries():返回键值对的遍历器

通过上面三个函数获得的对象都是遍历器对象Iterator,然后通过for…of循环来获取每一项的值。

因为Set实例的键和值是相等的,所以keys()和values()返回的是相同的值。

let set = new Set(['red','green','blue']);

for(let item of set.keys()) {
  console.log(item);
}
// red
// green
// blue

for(let item of set.values()) {
  console.log(item);
}
// red
// green
// blue

for(let item of set.entries()) {
  console.log(item);
}
// ["red","red"]
// ["green","green"]
// ["blue","blue"]