【金秋打卡】第18天 再学JavaScript ES(6-10)全版本语法大全
2022/11/13 4:24:00
本文主要是介绍【金秋打卡】第18天 再学JavaScript ES(6-10)全版本语法大全,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
课程名称:再学JavaScript ES(6-10)全版本语法大全
课程章节:2-24 Set数据结构
课程讲师:快乐动起来呀
课程内容:
ES6 提供了新的数据结构 Set,它类似于数组,但是成员的值都是唯一的,没有重复的值
Set本身是一个构造函数,用来生成 Set 数据结构
Set接收的参数是一个可遍历的对象,不是只有数组
let s = new Set()
Set 结构的实例有以下属性
Set.prototype.constructor:构造函数,默认就是Set函数
Set.prototype.size:返回Set实例的成员总数
Set 实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)
Set.prototype.add(value):添加某个值,返回 Set 结构本身,存入重复的数据,Set会过滤
Set.prototype.delete(value):删除某个值,返回一个布尔值,表示删除是否成功
Set.prototype.has(value):返回一个布尔值,表示该值是否为Set的成员
Set.prototype.clear():清除所有成员,没有返回值
上面这些属性和方法的实例
s.add(1).add(1).add(2); // 注意1被加入了两次 s.size // 2 s.has(1) // true s.has(2) // true s.has(3) // false s.delete(2); s.has(2) // false
Set 结构的实例有四个遍历方法,可以用于遍历成员
Set.prototype.keys():返回键名的遍历器
Set.prototype.values():返回键值的遍历器
Set.prototype.entries():返回键值对的遍历器
Set.prototype.forEach():使用回调函数遍历每个成员
Set的遍历顺序就是插入顺序,这个特性有时非常有用,比如使用 Set 保存一个回调函数列表,调用时就能保证按照添加顺序调用
keys(),values(),entries()
keys方法、values方法、entries方法返回的都是遍历器对象。
由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值),所以keys方法和values方法的行为完全一致。
let set = new Set(['red', 'green', 'blue']); for (let item of set.keys()) { console.log(item); } // red // green // blue for (let item of set.values()) { console.log(item); } // red // green // blue for (let item of set.entries()) { console.log(item); } // ["red", "red"] // ["green", "green"] // ["blue", "blue"]
上面代码中,entries方法返回的遍历器,同时包括键名和键值,所以每次输出一个数组,它的两个成员完全相等。
Set 结构的实例默认可遍历,它的默认遍历器生成函数就是它的values方法。
Set.prototype[Symbol.iterator] === Set.prototype.values // true
这意味着,可以省略values方法,直接用for…of循环遍历 Set。
let set = new Set(['red', 'green', 'blue']); for (let x of set) { console.log(x); } // red // green // blue
forEach()
Set 结构的实例与数组一样,也拥有forEach方法,用于对每个成员执行某种操作,没有返回值。
let set = new Set([1, 4, 9]); set.forEach((value, key) => console.log(key + ' : ' + value)) // 1 : 1 // 4 : 4 // 9 : 9
上面代码说明,forEach方法的参数就是一个处理函数
该函数的参数与数组的forEach一致,依次为键值、键名、集合本身(上例省略了该参数)
这里需要注意,Set 结构的键名就是键值(两者是同一个值),因此第一个参数与第二个参数的值永远都是一样的
另外,forEach方法还可以有第二个参数,表示绑定处理函数内部的this对象
课程收获:
Set没有提供直接改数据的方法,要改的话,要先删再添加。
这篇关于【金秋打卡】第18天 再学JavaScript ES(6-10)全版本语法大全的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?