文章插图
在写 Chrome插件时「插件分享 , 头条文章代码高亮 , 助力程序员文章分享」 , 刚好用到 Set 这个数据结构 , 所以这期就来谈谈 Set 。
什么是 Set(集合)【集合 一文了解 JavaScript 中的 Set】Set 是 ES6 中新增的一种对象类型 , 它存储的是唯一值的集合 。
也就是说 , 即使 Set 中存入相同的元素 , 也只会被保留一个 。
文章插图
Set 的创建Set 的创建有两种方法 。
1.创建空集后填充元素
文章插图
也可以使用链式写法
文章插图
2.Set 构造函数传入可迭代对象
文章插图
需要注意 , 当接收字符串作为可迭代对象时 , 是逐个字符进行迭代 。
文章插图
确定 Set 的大小通过 .size ——
文章插图
扩展一下 , 为什么不是使用常见的 length?
根据 ECMA-262 规范 , 数据集合(collection)的形式分为两大类:
- Indexed Collection(索引集合)
- Keyed Collection(键集合)
而像 Map(映射) , Set(集合)等是属于键集合 。它们通过键来进行元素的访问 。这种形式的集合使用 size 来确定集合的大小 。
Set 新增元素通过 .add() , 并且可以链式操作 ——
文章插图
Set 删除元素通过 .delete() ——
文章插图
检查 Set 中是否存在某个元素通过 .has() ——
文章插图
清空 Set 中元素通过 .clear() ——
文章插图
Set 的迭代操作Set 属于可迭代对象 , 迭代顺序是基于插入的顺序 。所以 , 它也存在可迭代对象的一些方法 。
1.遍历 Set
使用 .forEach()
文章插图
作为可迭代对象 , 也可以使用 for of 进行遍历
文章插图
2.迭代方法
根据 ECMA-262 定义 , Set 的迭代过程类似于具有相同键值对的 Map 。
For iteration purposes, a Set Appears similar to a Map where each entry has the same value for its key and value.所以 , Set 中的 .keys() 与 .values() 的 返回相同 。均返回一个迭代器对象 , 包含 Set 中的按插入顺序排列的所有元素的值 。
而键值对 .entries() 返回的迭代器对象 , 包含 Set 中的按插入顺序排列的所有元素的值的 [value, value] 数组 。
文章插图
常用场景数组去重
文章插图
除了这个使用场景外 , 日常中很少有使用 Set 的地方 。
部分原因在于 , 与提供了很多内置方法的数组 Array 相比 , Set 的内置方法还是偏少 。例如:基本的交集 , 并集等操作都没有提供 。
因此 , 下期我们就对 Set 进行一个扩展 , 手把手将它改造成更加实用的结构 。不妨先收藏加关注 。
推荐阅读
- 一文读懂银行数据架构体系
- 入冬四件套鲜花礼盒文案2021集合
- 并使用java实现 一文彻底看懂Base64编码解码原理
- 维生素B2的重要性
- 全国最美刘氏宗祠大集合!
- 面试官:先来简单聊一下SQL Join,看你对数据了解的怎么样
- 品评茶叶色泽了解茶叶的品质及制工
- 一文了解网络交换机的6种命令配置模式
- 你的网络信息是怎么泄露的?这四个陷阱了解下
- 了解一下PCI-E x1/x4/x8/x16四种插槽区别,对未来维修有重要意义