- Javascript 基础教程
- Javascript - 首页
- JavaScript - 路线图
- JavaScript - 概述
- JavaScript - 特性
- JavaScript - 启用
- JavaScript - 位置
- JavaScript - 语法
- JavaScript - Hello World
- JavaScript - Console.log()
- JavaScript - 注释
- JavaScript - 变量
- JavaScript - let 语句
- JavaScript - 常量
- JavaScript - 数据类型
- JavaScript - 类型转换
- JavaScript - 严格模式
- JavaScript - 保留关键字
- JavaScript 运算符
- JavaScript - 运算符
- JavaScript - 算术运算符
- JavaScript - 比较运算符
- JavaScript - 逻辑运算符
- JavaScript - 位运算符
- JavaScript - 赋值运算符
- JavaScript - 条件运算符
- JavaScript - typeof 运算符
- JavaScript - 空值合并运算符
- JavaScript - delete 运算符
- JavaScript - 逗号运算符
- JavaScript - 分组运算符
- JavaScript - yield 运算符
- JavaScript - 展开运算符
- JavaScript - 指数运算符
- JavaScript - 运算符优先级
- JavaScript 控制流
- JavaScript - if...else
- JavaScript - while 循环
- JavaScript - for 循环
- JavaScript - for...in
- Javascript - for...of
- JavaScript - 循环控制
- JavaScript - break 语句
- JavaScript - continue 语句
- JavaScript - switch case
- JavaScript - 用户定义迭代器
- JavaScript 函数
- JavaScript - 函数
- JavaScript - 函数表达式
- JavaScript - 函数参数
- JavaScript - 默认参数
- JavaScript - Function() 构造函数
- JavaScript - 函数提升
- JavaScript - 自执行函数
- JavaScript - 箭头函数
- JavaScript - 函数调用
- JavaScript - Function call()
- JavaScript - Function apply()
- JavaScript - Function bind()
- JavaScript - 闭包
- JavaScript - 变量作用域
- JavaScript - 全局变量
- JavaScript - 智能函数参数
- JavaScript 对象
- JavaScript - Number
- JavaScript - Boolean
- JavaScript - String
- JavaScript - Array
- JavaScript - Date
- JavaScript - DataView
- JavaScript - Handler
- JavaScript - Math
- JavaScript - RegExp
- JavaScript - Symbol
- JavaScript - 集合
- JavaScript - WeakSet
- JavaScript - Map
- JavaScript - WeakMap
- JavaScript - 可迭代对象
- JavaScript - Reflect
- JavaScript - TypedArray
- JavaScript - 模板字面量
- JavaScript - 标签模板
- 面向对象的 JavaScript
- JavaScript - 对象
- JavaScript - 类
- JavaScript - 对象属性
- JavaScript - 对象方法
- JavaScript - 静态方法
- JavaScript - 显示对象
- JavaScript - 对象访问器
- JavaScript - 对象构造函数
- JavaScript - 原生原型
- JavaScript - ES5 对象方法
- JavaScript - 封装
- JavaScript - 继承
- JavaScript - 抽象
- JavaScript - 多态
- JavaScript - 解构赋值
- JavaScript - 对象解构
- JavaScript - 数组解构
- JavaScript - 嵌套解构
- JavaScript - 可选链
- JavaScript - 全局对象
- JavaScript - Mixin
- JavaScript - Proxy
- JavaScript 版本
- JavaScript - 历史
- JavaScript - 版本
- JavaScript - ES5
- JavaScript - ES6
- ECMAScript 2016
- ECMAScript 2017
- ECMAScript 2018
- ECMAScript 2019
- ECMAScript 2020
- ECMAScript 2021
- ECMAScript 2022
- JavaScript 异步
- JavaScript - 异步
- JavaScript - 回调函数
- JavaScript - Promise
- JavaScript - Async/Await
- JavaScript - 微任务
- JavaScript - Promise 化
- JavaScript - Promise 链式调用
- JavaScript - 定时事件
- JavaScript - setTimeout()
- JavaScript - setInterval()
- JavaScript Cookie
- JavaScript - Cookie
- JavaScript - Cookie 属性
- JavaScript - 删除 Cookie
- JavaScript 浏览器 BOM
- JavaScript - 浏览器对象模型
- JavaScript - Window 对象
- JavaScript - Document 对象
- JavaScript - Screen 对象
- JavaScript - History 对象
- JavaScript - Navigator 对象
- JavaScript - Location 对象
- JavaScript - Console 对象
- JavaScript Web APIs
- JavaScript - Web API
- JavaScript - History API
- JavaScript - Storage API
- JavaScript - Forms API
- JavaScript - Worker API
- JavaScript - Fetch API
- JavaScript - Geolocation API
- JavaScript 事件
- JavaScript - 事件
- JavaScript - DOM 事件
- JavaScript - addEventListener()
- JavaScript - 鼠标事件
- JavaScript - 键盘事件
- JavaScript - 表单事件
- JavaScript - Window/Document 事件
- JavaScript - 事件委托
- JavaScript - 事件冒泡
- JavaScript - 事件捕获
- JavaScript - 自定义事件
- JavaScript 错误处理
- JavaScript - 错误处理
- JavaScript - try...catch
- JavaScript - 调试
- JavaScript - 自定义错误
- JavaScript - 扩展错误
- JavaScript 重要关键字
- JavaScript - this 关键字
- JavaScript - void 关键字
- JavaScript - new 关键字
- JavaScript - var 关键字
- JavaScript HTML DOM
- JavaScript - HTML DOM
- JavaScript - DOM 方法和属性
- JavaScript - DOM Document
- JavaScript - DOM 元素
- JavaScript - DOM 属性 (Attr)
- JavaScript - DOM 表单
- JavaScript - 修改 HTML
- JavaScript - 修改 CSS
- JavaScript - DOM 动画
- JavaScript - DOM 导航
- JavaScript - DOM 集合
- JavaScript - DOM NodeList
- JavaScript - DOM DOMTokenList
- JavaScript 其他
- JavaScript - Ajax
- JavaScript - 异步迭代
- JavaScript - Atomics 对象
- JavaScript - rest 参数
- JavaScript - 页面重定向
- JavaScript - 对话框
- JavaScript - 页面打印
- JavaScript - 验证
- JavaScript - 动画
- JavaScript - 多媒体
- JavaScript - 图片地图
- JavaScript - 浏览器
- JavaScript - JSON
- JavaScript - 多行字符串
- JavaScript - 日期格式
- JavaScript - 获取日期方法
- JavaScript - 设置日期方法
- JavaScript - 模块
- JavaScript - 动态导入
- JavaScript - BigInt
- JavaScript - Blob
- JavaScript - Unicode
- JavaScript - 浅拷贝
- JavaScript - 调用栈
- JavaScript - 引用类型
- JavaScript - IndexedDB
- JavaScript - 点击劫持攻击
- JavaScript - 柯里化
- JavaScript - 图形
- JavaScript - Canvas
- JavaScript - 防抖
- JavaScript - 性能
- JavaScript - 样式指南
JavaScript - 集合
JavaScript 的Set 对象是一个唯一值的集合。每个值在一个 Set 中只能出现一次。一个Set可以保存任何数据类型的任何值。集合是在 ECMAScript 6 (ES6) 中引入 JavaScript 的。
JavaScript 集合类似于数组,但有一些关键区别
- 集合只能保存唯一值,而数组可以保存重复值。
- 集合是无序的,而数组是有序的。
- 与数组相比,集合添加和删除项的速度更快。
JavaScript 集合通常用于存储唯一值,例如访问过网站的唯一用户。它们也可以用于从数组中删除重复值。
语法
用户可以按照以下语法在 JavaScript 中定义集合:
let set1 = new Set([iterable]);
在上述语法中,我们使用带有“new”关键字的 Set() 构造函数来定义集合。
参数
- Iterable−这是一个可选参数。Set() 构造函数遍历 iterable 的元素,并使用这些元素创建一个新的集合。
示例
示例(访问集合元素)
在下面的示例中,我们传递了一个包含重复元素的数组作为 Set() 构造函数的参数。num_set 只包含唯一值。
我们使用 values() 方法获取集合值的迭代器。要遍历迭代器,我们使用 for...of 循环。在循环中,我们访问元素并打印它。您可以观察到,即使输入数组包含重复元素,集合也只包含唯一值。
<html> <body> <p>The set elements are: </p> <p id = "output"></p> <script> const num_set = new Set([10, 20, 20, 20]); for (let value of num_set.values()) { document.getElementById("output").innerHTML += value + "<br> "; } </script> </body> </html>
输出
The set elements are: 10 20
示例(将元素插入集合)
用户可以使用 add() 方法将元素插入集合。在这里,我们创建了一个空集合。之后,我们使用 add() 方法三次将 60、50、50 元素添加到集合中。
我们插入了 2 次 50,但集合中只出现一次,因为它只包含唯一值。
<html> <body> <p>Set elements after adding element/s to it: </p> <div id = "output"> </div> <script> const num_set = new Set(); num_set.add(60); num_set.add(50); num_set.add(50); for (let value of num_set.values()) { document.getElementById("output").innerHTML += value + "<br> "; } </script> </body> </html>
输出
Set elements after adding element/s to it: 60 50
示例(删除集合元素)
集合的 delete() 方法允许您从集合中删除元素。在这里,我们创建了一个包含各种数字的集合,并使用 delete() 方法删除集合中的 200 和 400。
<html> <body> <p> After deleting elements from the set: </p> <div id = "output"> </div> <script> let num_set = new Set([100, 200, 300, 400, 500]); num_set.delete(200); num_set.delete(400); for (let value of num_set.values()) { document.getElementById("output").innerHTML += value + "<br> "; } </script> </body> </html>
输出
The set contains 100?: true
示例(检查集合是否包含特定值)
下面的示例演示了如何使用 has() 方法检查集合是否包含特定值。
在这里,我们检查集合是否包含 100,并相应地在输出中打印消息。
<html> <body> <p id = "output">The set contains 100?: </p> <script> const num_set = new Set([100, 200, 300, 400, 500]); document.getElementById("output").innerHTML += num_set.has(100); </script> </body> </html>
输出
它返回“true”,因为元素 100 存在于集合中。
The set contains 100?: true
数学集合运算
Set 类不包含执行数学集合运算(如并集、交集或集合差)的内置方法。因此,您需要编写自定义 JavaScript 代码来执行以下所示的数学运算。
示例(两个集合的并集)
两个集合的并集包含 set1 和 set2 的所有唯一元素。
在下面的示例中,set1 和 set2 包含汽车名称。我们定义了“union”集合并将数组作为参数传递。我们使用展开运算符创建一个包含 set1 和 set2 元素的数组。
<html> <body> <p>The Union of set1 and set2 is: </p> <div id = "output"> </div> <script> const set1 = new Set(["BMW", "Audi", "TATA"]); const set2 = new Set(["BMW", "TaTa", "Honda", "Suzuki"]); const union = new Set([...set1, ...set2]); // Taking union for (let value of union.values()) { document.getElementById("output").innerHTML += value + "<br> "; } </script> </body> </html>
输出
如果我们执行程序,它将返回 set1 和 set2 的所有唯一元素。
The Union of set1 and set2 is: BMW Audi TATA TaTa Honda Suzuki
示例(两个集合的交集)
两个集合的交集包含同时存在于 set1 和 set2 中的唯一元素。
在这里,我们有两个包含汽车名称的集合,并定义了“inter”集合来存储同时存在于两个集合中的集合元素。
我们遍历 set1 的元素,在循环内我们使用 has() 方法来检查 set1 的元素是否存在于 set2 中。如果存在,我们将元素添加到“inter”集合中。
<html> <body> <p> The intersection of set1 and set2 is: </p> <p id = "output"> </p> <script> const set1 = new Set(["BMW", "Audi", "TATA"]); const set2 = new Set(["BMW", "TATA", "Honda", "Suzuki"]); const inter = new Set(); for (let car of set1) { if (set2.has(car)) { inter.add(car); } } for (let value of inter.values()) { document.getElementById("output").innerHTML += value + "<br> "; } </script> </body> </html>
输出
The intersection of set1 and set2 is: BMW TATA
示例(两个集合的差集)
set1 和 set2 的差集包含 set1 中的所有元素,但不包含 set2 中的元素。
我们创建了一个名为“diff”的新集合,并用“set1”的元素初始化它。之后,我们遍历set2的元素。如果set2的任何元素存在于“diff”集合中,我们将删除它。
<html> <body> <p>The difference of set1 and set2 is: </p> <div id = "output"> </div> <script> const set1 = new Set(["BMW", "Audi", "TATA"]); const set2 = new Set(["BMW", "TATA", "Honda", "Suzuki"]); const diff = new Set(set1); for (let car of set2) { diff.delete(car); } for (let value of diff.values()) { document.getElementById("output").innerHTML += value + "<br> "; } </script> </body> </html>
输出
The difference of set1 and set2 is: Audi
JavaScript Set 参考
在 JavaScript 中,Set 是一个唯一值的集合。换句话说,每个值在一个集合中只能出现一次。它提供添加、删除和检查集合中元素存在的方法。这里,我们列出了 Set 类的属性和方法。
JavaScript Set 构造函数()
以下是 JavaScript 中 Set 的构造函数:
序号 | 名称及描述 |
---|---|
1 |
创建并返回由作为参数传递的值组成的唯一值集合。 |
JavaScript Set 属性
以下是 Set 类的属性:
序号 | 名称及描述 |
---|---|
1 |
此属性返回集合的大小。 |
JavaScript Set 方法
在下表中,我们列出了 Set 类所有属性:
序号 | 名称及描述 |
---|---|
1 |
此方法将元素插入集合中。 |
2 |
此方法删除集合中的所有元素。 |
3 |
此方法删除集合中的单个元素。 |
4 |
此方法返回第一个集合中存在但第二个集合中不存在的元素。 |
5 |
获取包含所有集合条目的迭代器。 |
6 |
此方法对该集合中的每个值执行一次提供的函数。 |
7 |
此方法指示是否存在具有指定值的元素。 |
8 |
此方法返回两个集合中共同的元素。 |
9 |
此方法是 values() 方法的别名。 |
10 |
此方法返回一个新的 Set 迭代器对象,其中包含 Set 对象中每个元素的值。 |