06 ES6中的Map类型

ES6 中的 Map 是一种集合数据结构,与 Set 类似,但它是用来存储键值对的。Map 提供了更灵活的迭代和更广泛的键类型支持,与普通的对象相比,Map 的键可以是任何值,包括对象和函数。

以下是 Map 类型的一些关键特性和常用方法:

特性

  1. 键的多样性Map 的键可以是任何类型,不仅限于字符串或数字。
  2. 顺序性Map 保留了键值对的插入顺序。
  3. 唯一性:每个键在 Map 中都是唯一的。

创建 Map

  • 使用 new Map() 构造函数创建一个空的 Map
  • 可以在创建时传入一个可迭代对象(其结构通常为 [键, 值] 的数组),来初始化 Map
let myMap = new Map();
let myMapFromIterable = new Map([['key1', 'value1'], ['key2', 'value2']]);

常用方法

  1. set(key, value):将一个键值对添加到 Map 对象中。

    myMap.set('key', 'value');
    
  2. get(key):返回与给定键关联的值。

    let value = myMap.get('key');
    
  3. has(key):检查 Map 对象是否包含特定的键。

    let hasKey = myMap.has('key');
    
  4. delete(key):从 Map 对象中移除指定的键值对。

    myMap.delete('key');
    
  5. clear():移除 Map 对象中的所有键值对。

    myMap.clear();
    
  6. size:返回 Map 对象中键值对的数量。

    let size = myMap.size;
    
  7. keys():返回一个新的迭代器对象,该迭代器包含 Map 对象中的键。

  8. values():返回一个新的迭代器对象,该迭代器包含 Map 对象中的值。

  9. entries():返回一个新的迭代器对象,该迭代器包含 Map 对象中的键值对数组。

  10. forEach(callbackFn, thisArg):对 Map 对象中的每个键值对执行给定函数。

myMap.forEach((value, key) => {console.log(`${key}: ${value}`);
});

转换为数组

  • 可以使用 Array.from() 方法将 Map 的键、值或键值对数组转换为数组。
let keysArray = Array.from(myMap.keys());
let valuesArray = Array.from(myMap.values());
let entriesArray = Array.from(myMap.entries());

示例

// 创建一个 Map 实例
let myMap = new Map();// 添加键值对
myMap.set('key1', 'value1');
myMap.set('key2', 'value2');// 获取与键关联的值
console.log(myMap.get('key1')); // 输出: value1// 检查键是否存在
console.log(myMap.has('key1')); // 输出: true// 删除键值对
myMap.delete('key1');// 获取 Map 的大小
console.log(myMap.size); // 输出: 1// 清空 Map
myMap.clear();// 遍历 Map
myMap.set('key3', 'value3');
myMap.forEach((value, key) => {console.log(`${key}: ${value}`); // 输出: key3: value3
});// 转换为数组
let keys = Array.from(myMap.keys());
let values = Array.from(myMap.values());
let entries = Array.from(myMap.entries());

Map 是一种非常有用的数据结构,特别适合于需要快速查找、添加和删除键值对的场景。它提供了一种更灵活的方式来存储和管理键值对集合。

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

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

相关文章

ElementUI,修改el-table中的数据,视图无法及时更新

需求&#xff1a;点击table表格中的“修改”之后&#xff0c;当前行变为可输入状态的行&#xff0c;点击“确定”后变为普通表格&#xff1b; 先贴上已经完美解决问题的代码 实现代码&#xff1a; <section><div style"display: flex;justify-content: space-b…

爬虫学习1:初学者简单了解爬虫的基本认识和操作(详细参考图片)

爬虫 定义&#xff1a;爬虫&#xff08;Web Crawler 或 Spider&#xff09;是一种自动访问互联网上网页的程序&#xff0c;其主要目的是索引网页内容&#xff0c;以便搜索引擎能够快速检索到相关信息。以下是爬虫的一些关键特性和功能&#xff1a; 自动化访问&#xff1a;爬虫能…

【React】事件绑定:深入解析高效处理用户交互的最佳实践

文章目录 一、什么是事件绑定&#xff1f;二、基本事件绑定三、绑定 this 上下文四、传递参数五、事件对象六、事件委托七、常见事件处理八、优化事件处理 React 是现代前端开发中最受欢迎的框架之一&#xff0c;其组件化和高效的状态管理能力使得构建复杂的用户界面变得更加容…

嵌入式MCU固件的几种Flash划分方式详解

通过OTA远程等方式下载的程序,其实还需要提前下载bootloader程序,才能进一步下载APP程序。 今天就来说说通过OTA方式升级固件时,几种flash划分方式。 独立型 所谓独立型就是专门划出一部分闪存(Flash)空间用来存储引导程序(BootLoader)。 如下图: BootLoader:引导…

神经网络的发展历程及未来展望

神经网络的发展历程及未来展望 神经网络&#xff0c;作为人工智能和机器学习领域的核心技术之一&#xff0c;经历了多次起伏波动&#xff0c;每一次的高潮和低谷都深刻影响了该技术的发展轨迹和应用范围。本文将详细探讨神经网络的发展历程&#xff0c;包括其爆发期、低谷期&am…

linux快速入门-学习笔记

linux快速入门-学习笔记 第一章&#xff1a;Linux系统概念及命令学习Linux系统基本概念命令终端介绍命令格式介绍Linux系统辨别目录与文件的方法通过文件详细属性辨别ls 查看目录/文件命令Linux 系统下的归属关系命令行编辑技巧Linux 基本权限的类别课后练习 第二章&#xff1a…

扫地机器人离线语音识别芯片,工业级智能交互ic,NRK3301

随着科技的飞速发展&#xff0c;智能家居已成为人们追求高品质生活的新趋势。扫地机器人&#xff0c;作为智能家居的重要一员&#xff0c;正逐步从简单的清扫工具进化为具备高度智能的家居助手。 在这一背景下&#xff0c;离线语音识别技术显得尤为重要。传统的扫地机器人大多依…

问题记录-Spring Security- bean httpSecurity not found

问题描述 最近使用Security的时候报了下面的错误&#xff1a; 配置如下&#xff1a; EnableWebSecurity Slf4j public class SecurityConfig {Resourceprivate CustUserService custUserService;Beanpublic AuthenticationProvider authenticationProvider() {return new A…

element-plus时间组件el-date-picker只能选择当前及之前日期

<el-date-picker v-model"timeVal" type"daterange" value-format"YYYY-MM-DD" range-separator"To" start-placeholder"开始时间" end-placeholder"结束时间" />默认是这样的&#xff0c;需要绑定disabled…

如何预防网站爬虫攻击

网站爬虫&#xff08;Web Scrapers&#xff09;是一种自动化工具&#xff0c;用于抓取网页上的数据。虽然合法的搜索引擎爬虫有助于提升网站的可见度&#xff0c;但恶意爬虫可能带来数据盗窃、版权侵犯等问题&#xff0c;甚至造成服务器过载。本文将探讨如何有效预防网站受到恶…

学习笔记4:docker和k8s选择简述

docker和 k8s 占用资源 使用客户体量Docker 和 Kubernetes&#xff08;K8s&#xff09;都是流行的容器化技术&#xff0c;但它们在资源管理和使用上有一些不同。以下是关于两者资源占用和使用客户体量的详细比较&#xff0c;基于具体数据和信息&#xff1a; Docker 资源占用…

一款基于Cortex-M0+的单片机音频编解码 - CJC2100

USBCodec芯片可以对数字音频信号进行多种处理&#xff0c;例如增加音量、均衡调节、音效处理等。这些处理可以通过耳机的控制按钮来实现&#xff0c;让用户可以根据自己的喜好来调整音频效果。USBCodec芯片还可以控制噪声和失真的水平&#xff0c;以提供高品质的音频输出。噪声…

[IMX6ULL]移植NXP Linux Kernel 5.15

移植NXP Linux Kernel 5.15 2024-7-7 hongxi.zhu 1. 下载NXP Linux Kernel 5.15 仓库[nxp-imx/linux-imx] git clone -b lf-5.15.y https://github.com/nxp-imx/linux-imx.git 2. 编译NXP Linux Kernel 5.15 make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- distclean make…

【3D 重建】NeRF,3D Gaussian Splatting

文章目录 AI 甘安捏【入门介绍&#xff0c;形象生动】3D 重建技術 (一): 什麼是 3D 重建 (3D Reconstruction)&#xff1f;為什麼需要 3D 重建&#xff1f;【NeRF&#xff0c;3D Gaussian Splatting简介】3D 重建技術 (二): NeRF&#xff0c;AI技術革命 -- 用神經網路把場景「背…

【维普网】收录的电子刊汇总(部分省市职称评审认可)

《中国科技期刊数据库&#xff08;文摘版&#xff09;医药卫生》是经国家新闻出版总署批准&#xff0c;科技部西南信息中心主管、重庆维普资讯有限公司主办的连续型电子出版物。国内刊号&#xff1a;50-9212/R&#xff0c;国际刊号&#xff1a; 1671-5608。主要栏目为影像与检验…

exo项目目录架构

目录 .yml 文件是 YAML(YAML Aint Markup Language) exo项目目录架构 文件作用 topology、viz:项目拓扑结构可视化相关的代码或工具。 项目目录架构 文件作用 .yml 文件是 YAML(YAML Aint Markup Language) 文件的扩展名,YAML 是一种人类可读的数据序列化标准,通…

Prometheus常用指标计算公式

Prometheus提供了许多有关系统性能和资源利用的内置指标&#xff0c;可以使用这些指标进行系统指标的计算和分析。以下是一些常见的系统指标计算公式示例&#xff1a; CPU使用率&#xff1a; 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode"idle"}[…

Cornerstone3D 演示库恢复更新啦~

前言 从0上手Cornerstone3D系列的git库终于有时间更新优化了一版。主要更新以下内容&#xff1a; ✨ vue2更新至vue3版本&#xff0c;代码迁移为vue3组合式写法 ✨ UI风格升级&#xff0c;新增交互提示 ✨ 修复页面切换报错问题 ✨ … 关于git库 &#x1f3af; 地址&…

el-upload照片墙自定义上传多张图片(手动一次性上传多张图片)包含图片回显,删除

需求&#xff1a;el-upload照片墙自定义上传多张图片&#xff08;手动一次性上传多张图片&#xff09;包含图片回显&#xff0c;删除&#xff0c;预览&#xff0c;在网上看了很多&#xff0c;都没有说怎么把数据转为file格式的&#xff0c;找了很久最终实现&#xff0c; 难点&a…

第4章 .NET 8.0 ASP.NET Core图书管理系统 :项目布局

第1章 框架学习的基石与实战策略 第2章 大话ASP.NET Core 入门 第3章 创建最小&#xff08;Minimal APIs&#xff09;API应用程序 第4章 .NET 8.0 ASP.NET Core图书管理系统 &#xff1a;项目布局 在第3章中&#xff0c;我们利用ASP.NET Core的“空”模板创建了BookQueryS…