ES6中的Set数据结构
Set
在ES6 中提供了新的数据结构Set, 该数据结构类似数组,但是成员的值都是唯一的,没有重复的值。如果遇到重复的成员,Set结构不会添加重复的值。Set本身就是一个构造函数,用来生成Set数据结构。
const s = new Set();
[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));
for (let i of s) {
console.log(i);
}
// 2 3 5 4
以上的例子说明,向Set结构中添加重复的成员,并不会成功,最终成员值都是不一样的。
Set函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化。
const items = new Set([1, 2, 3, 4, 5, 5, 5, 5]);
items.size // 5
const set = new Set(document.querySelectorAll('div'));
set.size
由上述例子可以看出,Set函数可以接受数组作为参数,也可以接受类似数组的,有Iterable的对象作为参数。
因为Set数据结构中彼此互不相同,我们就可以用来做数组去重,也可以用于去除字符串里面的重复字符。
//去除数组重复项
//其中利用了扩展运算符将最后结果转成了一个新的数组,array是需要去重的数组。
[...new Set(array)]
//去除字符串里面的重复字符
//先利用Set去重,结果为一个数组,再利用join方法将数组