JavaScript中的Set和Map:理解与使用

在这里插入图片描述

🤍 前端开发工程师、技术日更博主、已过CET6
🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1
🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》
🍚 蓝桥云课签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

文章目录

    • 摘要:
    • 引言:
    • 正文:
      • 1. 🌟 Set:集合数据结构
      • 2. 🛠️ Map:键值对集合数据结构
      • 3. 📝 Set和Map的应用场景
    • 总结:
    • 参考资料:

摘要:

本文将探讨JavaScript中的Set和Map数据结构。我们将了解它们的特点、用途以及如何使用它们。通过学习Set和Map,你将能更有效地管理集合数据。📚

引言:

在JavaScript中,我们经常需要处理集合数据。Set和Map是ES6引入的两种新的数据结构,它们提供了更强大的集合操作功能。本文将带你深入了解Set和Map,并学会如何使用它们。

正文:

1. 🌟 Set:集合数据结构

Set是一种新的数据结构,它类似于数组,但成员的值都是唯一的,没有重复的值。Set本身是一个构造函数,可以通过调用new Set()来创建一个新的Set实例。

Set的主要特点和用法如下:

  • 添加成员:使用add(value)方法添加成员。
  • 删除成员:使用delete(value)方法删除成员。
  • 检查成员:使用has(value)方法检查成员是否存在。
  • 遍历成员:使用forEach()方法或for...of循环遍历成员。
const mySet = new Set();
mySet.add('apple');
mySet.add('banana');
mySet.add('apple'); // 重复的值不会被添加
mySet.delete('banana'); // 删除成员
mySet.has('apple'); // 检查成员是否存在
mySet.forEach(value => {console.log(value);
});

2. 🛠️ Map:键值对集合数据结构

Map是另一种新的数据结构,它类似于对象,但键的范围不仅限于字符串,还可以是其他类型,如数字、对象等。Map存储键值对,并允许我们通过键来快速检索对应的值。

Map的主要特点和用法如下:

  • 添加键值对:使用set(key, value)方法添加键值对。
  • 获取值:使用get(key)方法通过键获取对应的值。
  • 删除键值对:使用delete(key)方法删除指定的键值对。
  • 检查键:使用has(key)方法检查Map中是否存在指定的键。
  • 遍历键值对:使用forEach()方法或for...of循环遍历键值对。
const myMap = new Map();
myMap.set('apple', 1);
myMap.set('banana', 2);
myMap.get('apple'); // 获取键'apple'对应的值
myMap.delete('banana'); // 删除键'banana'及其对应的值
myMap.has('apple'); // 检查Map中是否存在键'apple'
myMap.forEach((value, key) => {console.log(key, value);
});

3. 📝 Set和Map的应用场景

Set和Map在实际开发中有许多应用场景。例如,你可以使用Set来去重数组、生成唯一的标识符,或管理集合中的元素。Map则可以用于存储键值对,如用户信息、缓存数据等。

// 使用Set去除数组中的重复元素
const numbers = [1, 2, 2, 3, 4, 4, 5];
const uniqueNumbers = [...new Set(numbers)];
// 使用Map存储用户信息
const userMap = new Map();
userMap.set('user1', { name: 'Alice', age: 25 });
userMap.set('user2', { name: 'Bob', age: 30 });
console.log(userMap.get('user1')); // 输出用户信息

总结:

Set和Map是JavaScript中强大的集合数据结构。Set用于存储唯一的值,而Map用于存储键值对。通过学习Set和Map的特点和用法,你可以更有效地管理集合数据,提高代码的效率和可读性。

参考资料:

  • JavaScript官方文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set
  • JavaScript官方文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

希望这篇文章能帮助你理解和掌握Set和Map。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/526593.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Beans模块之工厂模块BeanFactory

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

8核16G服务器多少钱?2024年腾讯云8核16G轻量服务器性能测评

腾讯云8核16G轻量服务器CPU性能如何?18M带宽支持多少人在线?轻量应用服务器具有100%CPU性能,18M带宽下载速度2304KB/秒,折合2.25M/s,系统盘为270GB SSD盘,月流量3500GB,折合每天116.6GB流量&…

mysql的安装启动

下载 2.解压后放在某个目录下: 3.修改系统变量 4.修改配置文件 (创建一个ini文件放在解压后的目录下) 内容如下 5.初始化mysql 1.用管理员模式下输入: mysqld --initialize --console C:\WINDOWS\system32>mysqld --initia…

力扣589、590、102、107、429、199、637、515、116、117、104、111、226、101-Java刷题笔记

一、589. N 叉树的前序遍历 - 力扣(LeetCode) 1.1题目 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例&#xff09…

腾讯云8核16G18M服务器怎么样?阿腾云详细介绍

腾讯云8核16G轻量服务器CPU性能如何?18M带宽支持多少人在线?轻量应用服务器具有100%CPU性能,18M带宽下载速度2304KB/秒,折合2.25M/s,系统盘为270GB SSD盘,月流量3500GB,折合每天116.6GB流量&…

复盘-word

word-大学生网络创业交流会 设置段落,段后行距才有分 word-选中左边几行字进行操作 按住alt键进行选中 word复制excel随excel改变(选择性粘贴) 页边距为普通页边距定义 ##### word 在内容控件里面填文字(调属性&#xff09…

CACLP预告 | 飞凌嵌入式与您相约山城重庆

第二十一届中国国际检验医学暨输血仪器试剂博览会(CACLP)将于2024年3月16日-18日在重庆国际博览中心举行。本次会议将探讨科技创新趋势,展示最新成果,发现和挖掘颠覆性技术和创新产品,引领实验医学体外诊断科技创新和未…

树莓派4B Ubuntu20.04 Python3.9安装ROS踩坑记录

问题描述 在使用sudo apt-get update命令更新时发现无法引入apt-pkg,使用python3 -c "import apt_pkg"发现无法引入,应该是因为:20.04的系统默认python是3.8,但是我换成了3.9所以没有编译文件,于是使用sudo update-alte…

数据结构-稀疏数组

文章目录 1、什么是稀疏数组?2、稀疏数组的存储流程3、代码实现4、运行结果 1、什么是稀疏数组? 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 2、稀疏数组的存储流程 记录数组一共有几行…

【红外与可见光融合:条件学习:实例归一化(IN)】

Infrared and visible image fusion based on a two-stage class conditioned auto-encoder network (基于两级类条件自编码器网络的红外与可见光图像融合) 现有的基于自动编码器的红外和可见光图像融合方法通常利用共享编码器从不同模态中提取特征&am…

【MATLAB】MATLAB学习笔记

MATLAB入门 基础操作变量命名数据类型逻辑和流程控制循环结构分支结构 绘图基本操作二维平面绘图绘图参数三位立体绘图图像窗口的分割 本文参考B站视频:BV13D4y1Q7RS 由于我对于C语言很熟悉,很多语法是会参考C来学 基础操作 清屏%% 清空环境变量及命令 …

xxl-job学习记录

1、应用场景 例: 某收银系统需要在每天凌晨统计前一天的财务分析、汇总 某银行系统需要在信用卡还款日前三天发短信提醒等 2、为什么需要使用任务调度 spring中提供了注解Scheduled的注解,这个注解也可以实现定时任务的执行 我们只需要在方法上使用这…