概述
一直以来,JS只能使用数组和对象来保存多个数据,缺乏像其他语言那样拥有丰富的集合类型。因此,ES6新增了两种集合类型(set 和 map),用于在不同的场景中发挥作用。
集合:用来保存多个数据的数据结构。
set用于存放不重复的东西
如何使用
- 如何创建set集合
new Set(); // 创建一个没有任何内容的set集合
new Set(iterable); // 创建一个具有初始内容的set集合,内容来自于可迭代对象每一次迭代的结果
举例:
const s1 = new Set([1, 2, 3])
const s2 = new Set([1, 1, 2, 2, 3])
const s3 = new Set('aacbb')
console.log(s1); // {1, 2, 3}
console.log(s2); // {1, 2, 3}
console.log(s3); // {'a', 'c', 'b'}
- 如何对set集合进行后续操作
- add(数据) 添加一个数据到set集合末尾,如果数据已存在,则不进行任何操作
- set使用Object.is的方式判断两个数据是否相同(判断引用地址是否一样,不是严格相等),但是,针对+0和-0,set认为是相等
- has(数据): 判断set中是否存在对应的数据
- delete(数据):删除匹配的数据,返回是否删除成功
- clear():清空整个set集合
- size: 获取set集合中的元素数量,只读属性,无法重新赋值
-
如何与数组进行相互转换
const s = new Set([x,x,x]); // set本身也是一个可迭代对象,每次迭代的结果就是每一项的值 const arr = [...s];应用:
- 数组去重
const result = [...new Set(arr)] - 字符串去重
const result = [...new Set(str)].join("");
- 数组去重
-
如何遍历 1). 使用for-of循环 set集合本身是可迭代对象 2). 使用set中的实例方法 forEach 注意:set集合中不存在下标,因此forEach中的回调的第二个参数和第一个参数是一致的,均表示set中的每一项