JS里对于集合的简单介绍
JS的集合
- 前言
- 一、集合
- 二、基本使用
- 1. 创建集合
- 2. 添加元素
- 3. 删除元素
- 4. 检查元素
- 5. 清空集合
- 6. 集合的大小
- 三、扩展使用
- 1. 遍历集合
- 2. 从数组创建集合
- 3. 集合的应用场景
- 四、总结
前言
JS里对于集合的简单介绍
同数学的集合,有无序性、唯一性
注意:无法获取某个元素的下标,因为无序性
所以对于某些情况:
例如:求两数之和时,需要使用到下标,此时不适合使用集合,可以使用Map
一、集合
在 JavaScript 中,集合(Set)是一种非常有用的数据结构,用于存储独特的值,这些值可以是原始值或对象引用。集合的主要特点是它保证了集合中所有的值都是唯一的,因此在处理需要去重的数据时非常有效。
二、基本使用
1. 创建集合
可以通过 new Set() 来创建一个新的集合
// 创建空集合
const set1 = new Set();// 用数组初始化集合
const set2 = new Set([1, 2, 3, 3]); // 自动去重,结果为{1, 2, 3}// 用字符串初始化
const set3 = new Set("hello"); // {"h", "e", "l", "o"}// 用DOM对象初始化
const lis = document.querySelectorAll('li');
const setLi = new Set(lis);
2. 添加元素
使用 add() 方法向集合中添加元素
mySet.add(1);
mySet.add(2);
mySet.add(3);
console.log(mySet); // Set { 1, 2, 3 }
如果尝试添加重复的元素,集合会自动忽略
mySet.add(2);
console.log(mySet); // Set { 1, 2, 3 },2 只会出现一次
3. 删除元素
使用 delete() 方法从集合中删除元素
mySet.delete(2);
console.log(mySet); // Set { 1, 3 }
4. 检查元素
可以使用 has() 方法检查集合中是否包含特定元素
console.log(mySet.has(1)); // true
console.log(mySet.has(2)); // false
5. 清空集合
使用 clear() 方法可以移除集合中的所有元素
mySet.clear();
console.log(mySet); // Set {}
6. 集合的大小
使用 size 属性可以获取集合中元素的数量:
const mySet = new Set(1, 2, 3)
console.log(mySet.size); // 3
三、扩展使用
1. 遍历集合
可以使用 forEach 方法或 for…of 循环遍历集合中的元素:
mySet.add(1);
mySet.add(2);mySet.forEach(value => {console.log(value); // 输出 1 和 2
});for (const value of mySet) {console.log(value); // 输出 1 和 2
}
2. 从数组创建集合
可以将数组传递给 Set 构造函数,以自动去重数组中的元素
const uniqueArray = new Set([1, 2, 2, 3, 4]);
console.log(uniqueArray); // Set { 1, 2, 3, 4 }
如果需要将集合转换重新为数组,可以使用 Array.from() 或扩展运算符( … )
const uniqueArrayBack = Array.from(uniqueArray);
console.log(uniqueArrayBack); // [1, 2, 3, 4]const uniqueArrayBack2 = [...uniqueArray];
console.log(uniqueArrayBack2); // [1, 2, 3, 4]
3. 集合的应用场景
- 去重: 当你需要从一个数组中去掉重复的元素时,可以使用 Set。
- 检查唯一性: 快速检查一个元素是否已经在集合中。
- 集合运算: Set 也可以被用来实现集合运算,例如交集、并集和差集等。
示例:集合运算
下面的示例展示了如何使用集合来计算两个数组的交集
function intersect(arr1, arr2) {const set1 = new Set(arr1);const set2 = new Set(arr2);const intersection = [];set2.forEach(value => {if (set1.has(value)) {intersection.push(value);}});return intersection;
}const array1 = [1, 2, 3, 4];
const array2 = [3, 4, 5, 6];
console.log(intersect(array1, array2)); // 输出: [3, 4]
四、总结
JavaScript 中的集合(Set)提供了一种简单且高效的方式来处理具有唯一特性的值。它的易用性和强大功能使其在处理数据去重、唯一性检查和集合运算等方面非常有用。通过掌握 Set 的基本特性和方法,可以在 JavaScript 编程中更好地处理数据。
相关文章:
JS里对于集合的简单介绍
JS的集合 前言一、集合二、基本使用1. 创建集合2. 添加元素3. 删除元素4. 检查元素5. 清空集合6. 集合的大小 三、扩展使用1. 遍历集合2. 从数组创建集合3. 集合的应用场景 四、总结 前言 JS里对于集合的简单介绍 同数学的集合,有无序性、唯一性 注意:…...
论文阅读笔记——Multi-Token Attention
MTA 论文 在 Transformer 中计算注意力权重时,仅依赖单个 Q 和 K 的相似度,无法有效捕捉多标记组合信息。(对于 A、B 两个词,单标记注意力需要分别计算两个词的注意力分数,再通过后处理定位共同出现的位置或通过多层隐…...
Sql with as 语句
在SQL查询中,经常会遇到需要重复使用的子查询。为了简化查询语句并提高可读性,SQL引入了WITH AS语法。通过使用WITH AS,我们可以创建临时表或视图,将子查询的结果保存起来,并在主查询中使用。本文将通过示例介绍SQL中W…...
vue3 antdesign table表格特定单元格背景变色
效果: <a-table :columns"columnsAll" :data-source"tableAllData"bordered size"middle" :scroll"{ x: 100,y: 600 }" :pagination"false"style"margin: 0 10px 10px 10px;" ><template #…...
【C语言】--- 编译和链接
编译和链接 1. 翻译环境和运行环境2. 翻译环境2.1 预处理2.2 编译2.2.1 词法分析2.2.2 语法分析2.2.3 语义分析 2.3 汇编2.4 链接 3. 运行环境 1. 翻译环境和运行环境 计算机只能运行二进制指令,所以我们的.c的文本程序需要先翻译为二进制程序才能被计算机执行。在…...
Qwen2.5-7B-Instruct FastApi 部署调用教程
1 环境准备 基础环境最低要求说明: 环境名称版本信息1Ubuntu22.04.4 LTSCudaV12.1.105Python3.12.4NVIDIA CorporationRTX 3090 首先 pip 换源加速下载并安装依赖包 # 升级pip python -m pip install --upgrade pip # 更换 pypi 源加速库的安装 pip config set g…...
深入解析Python爬虫技术:从基础到实战的功能工具开发指南
一、引言:Python 爬虫技术的核心价值 在数据驱动的时代,网络爬虫作为获取公开数据的重要工具,正发挥着越来越关键的作用。Python 凭借其简洁的语法、丰富的生态工具以及强大的扩展性,成为爬虫开发的首选语言。根据 Stack Overflow 2024 年开发者调查,68% 的专业爬虫开发者…...
前端 Vue: Cannot find module XX or its corresponding type declarations.
记一个常见错误,每次创建完新的vuetsvite项目,在配置路由的时候总会找不到vue文件,我用的是Webstorm,在设置里面修改以下设置,即可消除警告。...
数字内容体验案例解析与行业应用
数字内容案例深度解析 在零售行业头部品牌的实践中,数字内容体验的革新直接推动了用户行为模式的转变。某国际美妆集团通过搭建智能内容中台,将产品信息库与消费者行为数据实时对接,实现不同渠道的动态内容生成。其电商平台首页的交互式AR试…...
Webpack中的文件指纹:给资源戴上个“名牌”
你是否想过,当你修改代码后,浏览器为什么仍然拿着旧版资源不放?秘密就在于——文件指纹!简单来说,文件指纹就像给每个构建出来的文件贴上独一无二的“姓名牌”,告诉浏览器:“嘿,我更…...
HBuilderX中uni-app打包Android(apk)全流程超详细打包
一、Android生成打包证书 1、Android平台签名证书(.keystore)生成指南_android 签名生成-CSDN博客(如果不上架应用商店可以跳过,可以使用云端证书) 二、打开manifest.json配置基础设置 三、配置安卓应用图标 四、配置安卓启动页图片 五、…...
多模态大模型重塑自动驾驶:技术融合与实践路径全解析
目录 1、 引言:AI与自动驾驶的革命性融合 2、五大领先多模态模型解析 2.1 Qwen2.5-Omni:全模态集大成者 2.2. LLaVA:视觉语言理解专家 2.3. Qwen2-VL:长视频理解能手 2.4. X-InstructBLIP:跨模态理解框架 2.5. …...
MySQL 中查询 VARCHAR 类型 JSON 数据的
在数据库设计中,有时我们会将 JSON 数据存储在 VARCHAR 或 TEXT 类型字段中。这种方式虽然灵活,但在查询时需要特别注意。本文将详细介绍如何在 MySQL 中有效查询存储为 VARCHAR 类型的 JSON 数据。 一、问题背景 当 JSON 数据存储在 VARCHAR 列中时&a…...
vue2 el-element中el-select选中值,数据已经改变但选择框中不显示值,需要其他输入框输入值才显示这个选择框才会显示刚才选中的值。
项目场景: <el-table-column label"税率" prop"TaxRate" width"180" align"center" show-overflow-tooltip><template slot-scope"{row, $index}"><el-form-item :prop"InquiryItemList. …...
OFDM CP 对解码影响
OFDM符号间会存在ISI,为了解决该问题在符号间插入了循环前缀,可以说这个发明是OFDM能够实用的关键,在多径信道中CP可以有效的解决符号间干扰。3GPP中对于不同SCS 定义了不同的CP长度: 5G Cyclic Prefix (CP) Design -5G Physical …...
oracle em修复之路
很早以前写的文章,再草稿中存放太久了,今天开始整理20年来工作体会,以后陆续发出,希望给大家提供小小的帮助。 去年做的项目使用的oracle数据库,最近要看一下,启动机器进入系统,出现无法加载数…...
STM32学习之ARM内核自带的中断
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...
【Windows】Win2008服务器SQL服务监控重启脚本
以下是一个用于监控并自动重启 SQL Server 服务的批处理脚本,适用于 Windows Server 2008 和 SQL Server 2012(默认实例): echo off setlocal enabledelayedexpansion:: 配置参数 set SERVICE_NAMEMSSQLSERVER set LOG_FILEC:\SQ…...
大型语言模型中的工具调用(Function Calling)技术详解
一、引言 随着大型语言模型(LLM)能力的飞速发展,它们在自然语言理解、文本生成、对话交互等方面展现出了令人惊叹的表现。然而,LLM 本身并不具备执行外部操作的能力,比如访问网页、调用第三方 API、执行精确数学运算等…...
Vue3.5 企业级管理系统实战(十四):动态主题切换
动态主题切换是针对用户体验的常见的功能之一,我们可以自己实现如暗黑模式、明亮模式的切换,也可以利用 Element Plus 默认支持的强大动态主题方案实现。这里我们探讨的是后者通过 CSS 变量设置的方案。 1 组件准备 1.1 修改 Navbar 组件 在 src/layo…...
解决Ubuntu20.04安装ROS2的问题(操作记录)
一、ROS 系统安装版本选择 每版的Ubuntu系统版本都有与之对应ROS版本,每一版ROS都有其对应版本的Ubuntu版本,切记不可随便装。ROS 和Ubuntu之间的版本对应关系如下:( 可以从这个网站查看ROS2的各个发行版本的介绍信息。ÿ…...
C# 设置Excel中文本的对齐方式、换行、和旋转
在 Excel 中,对齐、换行和旋转是用于设置单元格内容显示方式的功能。合理的设置这些文本选项可以帮助用户更好地组织和展示 Excel 表格中的数据,使表格更加清晰、易读,提高数据的可视化效果。本文将介绍如何在.NET 程序中通过C# 设置Excel单元…...
Python 的 re.split()
文章目录 栗子:关键点:进阶用法:对比普通 split():典型应用场景: 如何使用 Python 的 re.split() 方法通过正则表达式分割字符串。 栗子: import re s "apple123banana456orange" print(re.sp…...
大数据(6)【Kettle入门指南】从零开始掌握ETL工具:基础操作与实战案例解析
目录 为什么需要Kettle?一、Kettle基础概念与核心功能1.1 什么是Kettle?1.2 核心组件1.3 优势亮点 二、Kettle安装与快速上手2.1 环境准备2.2 启动Spoon 三、实战案例:从CSV到MySQL的数据迁移与清洗3.1 创建转…...
5.DJI-PSDK:Psdk开发负载与Msdk的应用app进行交互:
DJI-PSDK:Psdk开发负载与Msdk的应用app进行交互: 负载设备和无人机使用数据传输模块,在控制命令传输通道上以透传的方式在PSDK和MSDK间传输控制指令。在高速数据传输通道上以透传的方式在PSDK和MSDK间传输数据信息以及用户自定义的数据。使用数据传输功能,不仅可以设置不同…...
RPA VS AI Agent
图片来源网络 RPA(机器人流程自动化)和AI Agent(人工智能代理)在自动化和智能化领域各自扮演着重要角色,但它们之间存在显著的区别。以下是对两者区别的详细分析: 一、定义与核心功能 RPA(机…...
第三节:React 基础篇-React组件通信方案
React 组件通信方案详解及使用场景 以下是 React 组件通信的常用方法及其适用场景,以层级结构呈现: 一、父子组件通信 1. Props 传递 • 实现方式: • 父组件通过 props 向子组件传递数据。 • 子组件通过回调函数 (onEvent) 通知父组件更…...
uniapp大文件分包
1. 在pages.json中配置 "subPackages":[{"root":pagesUser,"pages":[{"path":mine/xxx,"style":xxx },{"path":mine/xxx,"style":xxx}]},{"root":pagesIndex,"pages":[{"p…...
Spark-core编程
sortByKey 函数说明 join 函数说明 leftOuterJoin 函数说明 cogroup 函数说明 RDD行动算子: 行动算子就是会触发action的算子,触发action的含义就是真正的计算数据。 reduce 函数说明 collect 函数说明 foreach 函数说明 count 函数说明 first …...
2025年的Android NDK 快速开发入门
十年前写过一篇介绍NDK开发的文章《Android实战技巧之二十三:Android Studio的NDK开发》,今天看来已经发生了很多变化,NDK开发变得更加容易了。下面就写一篇当下NDK开发快速入门。 **原生开发套件 (NDK) **是一套工具,使开发者能…...
