Sets 和数组一样,都是一些有序值的的集合,但是Sets 和数组又有所不同,首先Sets 集合中不能存有相同的值,如果你向Sets 添加重复的值,它会忽略掉, 其次Sets 集合的作用也有所不同,它的主要作用一是存储数据,二是在于看一个值是不是在集合中,而不是对单个值进行操作,Sets 的查找更快。那怎样才能创建一个Sets, 使用new Set(); 怎样才能添加值呢? 调用add() 方法
let set = new Set(); set.add(1); set.add(2); set.add({ name: 'sam' })
刚才我们说了,Sets 集合中不能添加重复的值,如果添加了,Sets 也会把它忽略掉,现在就可以试一试了,添加一个1,
let set = new Set(); set.add(1); set.add(2); set.add({ name: 'sam' }) set.add(1)
那我们怎么才能知道有没有添加到set中呢? 它又一个size属性,可以返回集合中又多少个元素,
console.log(set.size) // 3
set 中只要3个元素, 表明没有添加成功, 直接console.log(set), 也能看出它里面的包含的值。那这又引出了例外一个问题,Sets 集合是怎么判断两个值是重复或相等呢?内部调用的是Object.is() 方法判断相等性。
除了调用add() 方法添加数据外,我们也可以创建Sets 的时候,直接进行初始化。new Set() 可接受数组作为参数,如果数组中有重复的值,初始化的时候直接过滤掉。
let set = new Set([1, 1, 2, 3, 3]); console.log(set.size) // 3