一、Set的基本用法
ES6提供的Set集合用于存储不重复的数据
Set本身是一个构造函数,用来生成 Set 数据结构。
const s = new Set();
s.add(1);
s.add(1);
console.log([...s]);//[1]
在上面代码中,创建了一个Set结构,然后通过add()方法向里面添加了两个相同的成员,最后输出的只有一个成员。
结果表明 Set 结构不会添加重复的值。
let obj = {
a : 1,
b : 2
}
const s = new Set(obj);//报错
当向Set集合中加入一个对象时,会抛出一个错误,提示类型错误(对象不具有iterable 接口)。
Set函数接受的参数必须具有 iterable 接口。
const s = new Set("abcdefg");
console.log([...s]);//["a", "b", "c", "d", "e", "f", "g"]
如果Set函数传入的参数的是一个原始值,则会将转换成字符串对象,再进行存储
二、Set实例的属性和方法
1.add()
添加某个值,返回 Set 结构本身。
const s = new Set();
s.add(1);
s.add(1);//无效添加
2.has()
返回一个布尔值,表示该值是否为Set的成员。
const s = new Set([1,2,3,4,5]);
s.has(1);//true
s.has(6);//false
3.delete()
删除某个值,返回一个布尔值,表示删除是否成功。
const s = new Set([1,2,3,4,5]);
s.delete(1);//true
s.delete(6);//false
4.clear()
清除所有成员,没有返回值。
const s = new Set([1,2,3,4,5]);
s.clear();
console.log([...s]);//[]
5.size
返回Set实例的成员总数。
const s = new Set([1,2,3,4,5]);
s.size;//5
6.forEach()
Set 结构的实例与数组一样,也拥有forEach方法,用于对每个成员执行某种操作,没有返回值。
const s = new Set([1,2,3,4,5]);
s.forEach((item,index,s)=>{
console.log(item,index,s)
})
从上面输出结果中可以看出Set结构中的forEach()方法被重写了,与数组的不同。
在Set集合中index不是下标,Set集合没有下标。
forEach中第一个参数和第二个参数的值是相同的,都代表Set集合中的每一项数据。