一、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);//false3.delete() 删除某个值,返回一个布尔值,表示删除是否成功。
const s = new Set([1,2,3,4,5]); s.delete(1);//true s.delete(6);//false4.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;//56.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集合中的每一项数据。