一、课程名称:前端工程师2022版
二、课程章节:ES6语法扩展-Set和Map数据结构
三、课程讲师:Alex
四、课程内容
1、Set是什么
(1)什么是Set
可以翻译为“集合”(但不推荐使用这个翻译,因为翻译有时候会失真),它和数组类似(数组是一系列有序的数据集合),Set是一系列无序、没有重复值的数据集合
(2)理解Set
1)数组创建的方式有两种,一种是字面量,一种是通过实例化构造函数,而Set只能通过实例化构造函数进行创建
2)添加成员,使用add属性添加,每次只能添加一个,且Set中不能有重复的成员
3)Set没有下标去标示每一个值,所以Set是无序的,也不能像数组那样通过下标取访问Set的成员
2、Set实例的方法和属性(重要)
(1)方法
1)add:可以为Set添加成员,括号内一次只能添加一个成员,且成员不能重复,但是可以连续添加
const s = new Set();
s.add(1).add(2).add(3);
console.log(s); //Set(3) {1, 2, 3}
2)has:可以用于判断Set中是否有某个成员,输出结果为布尔值
console.log(s.has(1)); //true
console.log(s.has(4)); //false
3)delete:可以删除指定成员,如果使用delete删除不存在的成员,什么都不会发生,也不会报错
s.delete(3);
console.log(s); //Set(2) {1, 2}
s.delete(4); //删除不存在成员,不会报错,也不会有什么发生
console.log(s); //Set(2) {1, 2}
4)clear:可以清空Set内的所有成员
s.clear();
console.log(s); //Set(0) {size: 0}
5)forEach:可以用来遍历Set,给访问Set成员提供方法,会按照成员添加进集合的顺序遍历
①forEach方法第一个参数是回调函数,第二个参数是指定回调函数中的this指向是什么
②回调函数中传入参数,其中value代表Set中的每一个成员;key没有什么实际意义,它相当于value,即value = key,这里放上key只是为了做到统一,因为后面的Map也有forEach方法;set表示前面的's'本身
s.forEach(function (value, key, set) {
console.log(value, key, set);
console.log(value, key, set === s); //true
console.log(this); //#document
}, document);
console.log(s);
(2)属性(只有一个):size:用于获取成员长度
console.log(s.size); //3
五、课程心得
今天学习了Set的相关知识,Alex老师用以前学习过的数组知识来引出了Set的相关知识,让我更加快地学习到Set的知识,期待接下来的Set的其他知识。