JS中Map相关介绍

1、Map概念

Map 是一种集合数据结构,它存储键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值)都可以作为一个键或一个值。

2、创建一个Map

你可以通过 new Map() 构造函数来创建一个空的 Map

const myMap = new Map();

你也可以在创建时直接初始化 Map,通过传递一个可迭代对象,其中每个元素都是一个包含两个元素的数组,第一个元素是键,第二个元素是值。

const myMap = new Map([[1, 'one'],[2, 'two'],[3, 'three']
]);

Map的方法和属性

  • set(key, value):在 Map 中设置键值对。
  • get(key):返回键对应的值,如果不存在则返回 undefined
  • has(key):返回一个布尔值,表示 Map 中是否包含指定的键。
  • delete(key):从 Map 中移除指定的键值对,如果键存在并成功移除,返回 true,否则返回 false
  • clear():移除 Map 中所有的键值对。
  • size:返回 Map 中键值对的数量。
const myMap = new Map();// 设置键值对
myMap.set('a', 1);
myMap.set('b', 2);
myMap.set('c', 3);// 获取值
console.log(myMap.get('a')); // 输出: 1// 检查键是否存在
console.log(myMap.has('a')); // 输出: true// 删除键值对
myMap.delete('a');
console.log(myMap.has('a')); // 输出: false// 获取Map的大小
console.log(myMap.size); // 输出: 2// 遍历Map
myMap.forEach((value, key) => {console.log(`${key}:${value}`);
});// 清空Map
myMap.clear();
console.log(myMap.size); // 输出: 0

Map的迭代

Map 对象原型上暴露了几个迭代器方法,用于遍历Map中的键值对:

  • keys():返回一个新的迭代器对象,它按插入顺序包含了Map对象中每个元素的键。
  • values():返回一个新的迭代器对象,它按插入顺序包含了Map对象中每个元素的值。
  • entries():返回一个新的迭代器对象,它按插入顺序包含了Map对象中每个元素的键值对数组。

例如:

for (let [key, value] of myMap.entries()) {console.log(key, value);
}
// 等同于
for (let [key, value] of myMap) {console.log(key, value);
}

 Map 对象在JavaScript中是非常有用的,特别是在需要保持键值对的插入顺序时。与普通对象相比,Map 允许任何类型的键,并且可以很容易地迭代其元素。

3、Map重要的函数(也称为方法

基本操作函数

  • Map.prototype.set(key, value):设置Map中键key的值为value,并返回该Map对象。

  • Map.prototype.get(key):返回Map中与指定键key相关联的值,如果找不到键则返回undefined

  • Map.prototype.has(key):返回一个布尔值,表示Map中是否包含指定的键key

  • Map.prototype.delete(key):从Map中删除指定的键key及其对应的值,如果删除成功则返回true,否则返回false

  • Map.prototype.clear():移除Map对象中所有的键值对。

遍历函数

  • Map.prototype.keys():返回一个新的迭代器对象,它按插入顺序包含了Map对象中每个元素的键。

  • Map.prototype.values():返回一个新的迭代器对象,它按插入顺序包含了Map对象中每个元素的值。

  • Map.prototype.entries():返回一个新的迭代器对象,它按插入顺序包含了Map对象中每个元素的键值对数组。

  • Map.prototype.forEach(callbackFn[, thisArg]):按照插入顺序,为Map对象里的每一键值对调用一次callbackFn函数。如果提供了thisArg,它将作为callbackFn函数的this值。

示例

以下是如何使用这些函数的示例:

const myMap = new Map();// 设置键值对
myMap.set('a', 1);
myMap.set('b', 2);
myMap.set('c', 3);// 获取值
console.log(myMap.get('a')); // 输出: 1// 检查键是否存在
console.log(myMap.has('a')); // 输出: true// 删除键值对
console.log(myMap.delete('a')); // 输出: true// 遍历键
for (const key of myMap.keys()) {console.log(key);
}// 遍历值
for (const value of myMap.values()) {console.log(value);
}// 遍历键值对
for (const [key, value] of myMap.entries()) {console.log(key, value);
}// 使用forEach遍历
myMap.forEach((value, key) => {console.log(key, value);
});// 清空Map
myMap.clear();

这些函数是Map对象的核心,使得Map成为处理键值对数据的一个非常强大和灵活的数据结构。

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

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

相关文章

基于YOLO11深度学习的运动鞋品牌检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

DAY08 List接口、Collections接口、Set接口

学习目标 能够说出List集合特点1.有序2.允许存储重复的元素3.有带索引的方法(练习 add,remove,set,get) 能够使用集合工具类Collections类:static void sort(List<T> list) 根据元素的自然顺序 对指定列表按升序进行排序。static <T> void sort(List<T> lis…

shell编程总结

前言 shell编程学习总结&#xff0c;1万3千多字带你学习shell编程 往期推荐 14wpoc&#xff0c;nuclei全家桶&#xff1a;nuclei模版管理工具Nuclei 哥斯拉二开&#xff0c;免杀绕过规避流量检测设备 fscan全家桶&#xff1a;FscanPlus&#xff0c;fs&#xff0c;fscan适用…

OpenAI ChatGPT在心理治疗领域展现超凡同理心,通过图灵测试挑战人类专家

近期&#xff0c;一项关于OpenAI ChatGPT在心理治疗领域的研究更是引起了广泛关注。据报道&#xff0c;ChatGPT已经成功通过了治疗师领域的图灵测试&#xff0c;其表现甚至在某些方面超越了人类治疗师&#xff0c;尤其是在展现同理心方面&#xff0c;这一发现无疑为AI在心理健康…

【智能客服】ChatGPT大模型话术优化落地方案

本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权) 目录 一、项目背景 1.1 行业背景 1.2 业务现…

【JavaWeb12】数据交换与异步请求:JSON与Ajax的绝妙搭配是否塑造了Web的交互革命?

文章目录 &#x1f30d;一. 数据交换--JSON❄️1. JSON介绍❄️2. JSON 快速入门❄️3. JSON 对象和字符串对象转换❄️4. JSON 在 java 中使用❄️5. 代码演示 &#x1f30d;二. 异步请求--Ajax❄️1. 基本介绍❄️2. JavaScript 原生 Ajax 请求❄️3. JQuery 的 Ajax 请求 &a…

[Android]APP自启动

APP添加自启动权限&#xff0c;重启设备后自动打开APP。 1.AndroidManifest.xml <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.an…

Moonshot AI 新突破:MoBA 为大语言模型长文本处理提效论文速读

前言 在自然语言处理领域&#xff0c;随着大语言模型&#xff08;LLMs&#xff09;不断拓展其阅读、理解和生成文本的能力&#xff0c;如何高效处理长文本成为一项关键挑战。近日&#xff0c;Moonshot AI Research 联合清华大学、浙江大学的研究人员提出了一种创新方法 —— 混…

cs224w课程学习笔记-第2课

cs224w课程学习笔记-第2课 传统图学习 前言一、节点任务1、任务背景2、特征节点度3、特征节点中心性3.1 特征向量中心性&#xff08;Eigenvector Centrality&#xff09;3.2 中介中心性&#xff08;Betweenness Centrality&#xff09;3.3 接近中心性&#xff08;Closeness Cen…

Centos虚拟机扩展磁盘空间

Centos虚拟机扩展磁盘空间 扩展前后效果1 虚拟机vmware关机后&#xff0c;编辑2 扩展2.1 查看2.2 新建分区2.3 格式化新建分区ext42.3.1 格式化2.3.2 创建2.3.3 修改2.3.4 查看 2.4 扩容2.4.1 扩容2.4.1 查看 扩展前后效果 df -h1 虚拟机vmware关机后&#xff0c;编辑 2 扩展 …

1.13作业

1 if(!preg_match("/[0-9]|\~|\|\|\#|\\$|\%|\^|\&|\*|\&#xff08;|\&#xff09;|\-|\|\|\{|\[|\]|\}|\:|\|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $c)){eval($c); 构造数组rce ?ceval(array_pop(next(get_defined_vars()))); post传参:asystem("c…

如何在 SpringBoot 项目使用 Redis 的 Pipeline 功能

本文是博主在批量存储聊天中用户状态和登陆信息到 Redis 缓存中时&#xff0c;使用到了 Pipeline 功能&#xff0c;并对此做出了整理。 一、Redis Pipeline 是什么 Redis 的 Pipeline 功能可以显著提升 Redis 操作的性能&#xff0c;性能提升的原因在于可以批量执行命令。当我…

力扣LeetCode: 2209 用地毯覆盖后的最少白色砖块

题目&#xff1a; 给你一个下标从 0 开始的 二进制 字符串 floor &#xff0c;它表示地板上砖块的颜色。 floor[i] 0 表示地板上第 i 块砖块的颜色是 黑色 。floor[i] 1 表示地板上第 i 块砖块的颜色是 白色 。 同时给你 numCarpets 和 carpetLen 。你有 numCarpets 条 黑…

RabbitMQ 消息队列

1. 消息队列是什么&#xff1f; 当用户注册成功后&#xff0c;就发送邮件。当邮件发送成功了&#xff0c;接口才会提示注册成功信息。但由于发送邮件&#xff0c;依赖于其他厂商的服务&#xff0c;有可能他们的接口会非常耗时。那么用户就一直要等着邮件发送成功了&#xff0c;…

【SQL实验】触发器

下载素材文件”tsgl”、“成绩管理”,将tsgl.bak和成绩管理.bak数据库还原到库中【导入操作在之前的文章中详细讲过】 触发器 1、为图书表设置更新触发器&#xff0c;根据总编号来更新书名、作者、出版社、分类号和单价(根据总编号找到相应记录&#xff0c;然后更新书名、作者…

Win10系统Docker+DeepSeek+ragflow搭建本地知识库

文章目录 1、安装ollama1.1 下载1.2 安装1.3 cmd命令行测试安装成功1.4 拉取模型2、安装ragflow2.1 下载项目2.2 通过docker拉取镜像安装2.3 查看docker日志是否安装成功3、模型配置3.1 第一次登录需要注册3.2 模型添加4、知识库配置4.1 创建知识库4.2 上传文档4.3 解析5、聊天…

redis的应用,缓存,分布式锁

1.应用 1.1可以用作缓存 作用&#xff1a;提交数据的查询效率&#xff0c;减少对数据库的访问频率 什么数据适合放入缓存 1.查询频率高&#xff0c;修改频率低 2.对安全系数比较低 如何实现 Service public class DeptServer {Autowiredprivate DeptMapper deptMapper;Auto…

springboot整合 xxl-job

文章目录 一、xxl-job是什么二、使用步骤 1. 下载并运行管理端代码2. 访问管理页面&#xff0c;确认是否启动成功3. 配置执行器【在自己的springboot项目中配置】4. 在页面上创建执行器和任务&#xff0c;与项目中绑定 总结参考 一、xxl-job是什么 XXL-JOB 是一个分布式任务调…

Jenkins 环境搭建---基于 Docker

前期准备 提前安装jdk、maven、nodeJs&#xff08;如果需要的话&#xff09; 创建 jenkins 环境目录&#xff0c;用来当做挂载卷 /data/jenkins/ 一&#xff1a;拉取 Jenkins 镜像 docker pull jenkins/jenkins:lts 二&#xff1a;设置 Jenkins挂载目录 mkdir -p ~/jen…

小米路由器 AX3000T 降级后无法正常使用,解决办法

问题描述 买了个 AX3000T 路由器&#xff0c;想安装 OpenWRT 或者 安装 Clash 使用&#xff0c;看教程说是需要降级到 v1.0.47 版本。 结果刷机之后路由器无法打开了&#xff0c;一直黄灯亮&#xff0c;中间灭一下&#xff0c;又是黄灯长亮&#xff0c;没有 WIFI 没有连接。以…