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.mzph.cn/news/734804.shtml

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

相关文章

C++:类和对象(三)——拷贝构造函数和运算符重载

目录 一、拷贝构造函数 1.概念 2.特性 二、赋值运算符重载 1.运算符重载 2.赋值运算符重载 (1)注意的点: (2)赋值运算符不允许被重载为全局函数,只能重载为类的成员函数 (3)…

代码随想录算法训练营day32

题目:122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II 参考链接:代码随想录 122.买卖股票的最佳时机II 思路:本题我一开始想到的是参考前面的摆动序列,先用坡度图思考,我们要返回最大利润,即要做…

C++ 字符串OJ

目录 1、14. 最长公共前缀 2、 5. 最长回文子串 3、 67. 二进制求和 4、43. 字符串相乘 1、14. 最长公共前缀 思路一:两两字符串进行比较,每次比较过程相同,可以添加一个函数辅助比较,查找最长公共前缀。 class Solution { pu…

【C++】函数模板和类模板

目录 1.泛型编程 2.函数模板 2.1函数模板的定义格式 2.2函数模板的实例化 2.3函数模板参数的匹配原则 3.类模板 3.1类模板的定义格式 3.2类模板的实例化 3.3模板的分离编译 1.泛型编程 泛型编程:编写与类型无关的通用代码,是代码复用的一种手段…

php开发100问?

什么是 PHP?PHP 是一种什么类型的语言?PHP 的优缺点是什么?如何在服务器上配置 PHP?PHP 中的变量是如何声明和使用的?如何在 PHP 中输出文本和变量?什么是 PHP 的数据类型?如何在 PHP 中实现条件…

【前端CSS】CSS的3种基本选择器和5种高级选择器使用方式

目录 前言 基本选择器 1.1 标签选择器 1.2 ID选择器 1.3 类选择器 高级选择器 2.1 并集选择器 2.2 交集选择器 2.3 后代选择器 2.4 子元素选择器 2.5 属性选择器 前言 1W:什么是CSS选择器? CSS选择器由HTML元素的id、class属性或元素名本身以及…

SpringBoot中定时任务、corn表达式

SpringBoot中定时任务、corn表达式 corn表达式网站:https://cron.qqe2.com/ 方法上加上Scheduled(cron表达式) 启动类上加上EnableScheduling 示例 启动类上 启动类加上EnableScheduling开启定时任务。 SpringBootApplication EnableScheduling public class…

vue 在什么情况下在数据发生改变的时候不会触发视图更新

在 Vue 中,通常数据发生变化时,视图会自动更新。但是,有几种情况可能导致数据变化不会触发视图更新: 1.对象属性的添加或删除: Vue 无法检测到对象属性的添加或删除。因为 Vue 在初始化实例时对属性执行了 getter/se…

VUE3 使用axios网络请求

1.新建工程 参考,VUE3 环境搭建:https://blog.csdn.net/LQ_001/article/details/136293795,运行命令 vue create vue-demo 2.引入axios 不管何种引用,都要在工程中安装 axios 包。安装命令:npm install --save axio…

C语言——函数指针——函数指针变量(详解)

函数指针变量 函数指针变量的作用 函数指针变量是指向函数的指针,它可以用来存储函数的地址,并且可以通过该指针调用相应的函数。函数指针变量的作用主要有以下几个方面: 回调函数:函数指针变量可以作为参数传递给其他函数&…

高性能JSON框架之FastJson的简单使用

高性能JSON框架之FastJson的简单使用、 1.前言 1.1.FastJson的介绍: JSON协议使用方便,越来越流行,JSON的处理器有很多,这里我介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的Json框架,Github地址: FastJson 1.2.FastJson的特点: 1.F…

C/C++蓝桥杯之日期问题

问题描述:小明正在整理一批文献,这些文献中出现了很多日期,小明知道这些日期都在1960年1月1日至2059年12月31日之间,令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日…

蓝桥杯刷题--python-20-多路归并,贡献法

1262. 鱼塘钓鱼 - AcWing题库 nint(input()) a[0]list(map(int,input().split())) b[0]list(map(int,input().split())) l[0]list(map(int,input().split())) spend[0 for i in range(n1)] for i in range (1,n): l[i]l[i-1] tint(input()) def get(k): return max(0,a…

拿捏算法的复杂度

目录 前言 一:算法的时间复杂度 1.定义 2.简单的算法可以数循环的次数,其余需要经过计算得出表达式 3.记法:大O的渐近表示法 表示规则:对得出的时间复杂度的函数表达式,只关注最高阶,其余项和最高阶…

【音视频开发好书推荐2】《FFmpeg 音视频开发基础与实战》

1、多媒体处理开源库FFmpeg概述 享有盛名的音视频多媒体处理开源库FFmpeg,做过音视频编解码开发的同学基本都用过,即便没做过这方面开发,也会听说过这个开源库。 FFmpeg是目前最全面的开源音视频编解码库,包括常用的音视频编码协议…

JavaScript原型和原型链

JavaScript每个对象拥有一个原型对象 需要注意的是,只有函数对象才有 prototype 属性 当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索&#xff…

C++指针(五)完结篇

个人主页:PingdiGuo_guo 收录专栏:C干货专栏 前言 相关文章:C指针(一)、C指针(二)、C指针(三)、C指针(四)万字图文详解! 本篇博客是介…

ai学习前瞻-python环境搭建

python环境搭建 Python环境搭建1. python的安装环境2. MiniConda安装3. pycharm安装4. Jupyter 工具安装5. conda搭建虚拟环境6. 安装python模块pip安装conda安装 7. 关联虚拟环境运行项目 Python环境搭建 1. python的安装环境 ​ python环境安装有4中方式。 从上图可以了解…

Vuforia Engine 支持的操作系统、工具和设备版本

支持的版本 Vuforia Engine 支持以下操作系统、工具和设备版本,以便使用 Vuforia Engine 平台开发应用程序。 移动设备

物联网电气融合实训室建设方案

1 教学实训总体设计 1.1 建设背景 (一)政策推动与战略部署 近年来,物联网技术在全球范围内得到了广泛的关注和应用。作为信息技术的重要组成部分,物联网在推动经济转型升级、提升社会管理水平、改善民生福祉等方面发挥着重要作…