Map基础

简介: MAP基础map不同于普通的对象,普通对象的键值对,键只能是数值、字符串或者符号,而map的键可以是任意类型的值,包括对象、函数、数组等。

MAP基础

map不同于普通的对象,普通对象的键值对,键只能是数值、字符串或者符号,而map的键可以是任意类型的值,包括对象、函数、数组等。

创建map

  • 使用Map构造函数
    const map1 = new Map();

我们可以在使用Map构造函数创建的时候,顺带进行初始化:

const map2 = new Map([
  ['name', '张三'],
  ['age', 18]
]);
复制代码

Map常见方法

  • set(key, value)设置键值对
    map.set(key, value);

在map初始化之后,我们使用set方法,可以往map中添加键值对。

const m = new Map();
m.set('name', '海绵宝宝');// 添加了一个键值对
复制代码
  • has(key)判断是否存在某个键
    map.has(key);

在实际开发中,我们有时候需要查询,map里面是否存在这样一个键,此时,我们就需要用到has方法:

const m = new Map();
m.set('name', '海绵宝宝');
alert(m.has('name'));// true
复制代码

若是存在,返回true,否则返回false

  • get(key)获取键值对

在上面我们知道了如何查询一个元素在map中是否存在,那么,如果我们想要获取这个元素的值,我们就需要使用get方法:

map.get(key);
复制代码

get方法:如果存在,返回对应的值,否则返回undefined

const m = new Map();
m.set('name', '海绵宝宝');
alert(m.get('name'));// 获取到了键值对的值 海绵宝宝
复制代码
  • delete(key)删除某个键值对
    map.delete(key);

前面我们知道了可以增加、查询、判断是否存在某个键,那么如何删除呢?使用delete方法。

const m = new Map();
m.set('name', '海绵宝宝');
m.delete('name');// 删除name键值对
alert(m.has('name'));// false 
复制代码

在删除之后,我们再次查询,发现已经不存在了。

  • clear()清空map
    map.clear();

若是我们想直接清空整个map,可以使用clear方法。

const m = new Map();
m.set('name', '海绵宝宝');
m.clear();// 清空map
alert(m.has('name'));// false
复制代码

使用clear之后,这个map里面的所有内容将会被删除,我们再次查询,发现已经不存在了。

如何选择

前面我们说道,map和object的区别有在于键:

  • map的键可以是任意类型的值,而object的键只能是数值、字符串或者符号。

那么在实际开发中,我们如何来选择呢?

  1. 内存

在固定内存大小的情况下,map可以比object更好的存储数据(map可以多储存50%的键值对)。

  1. 查找

两者差别不大,在键值对较少的情况下,object的速度也快一点,如果object的键是当做数组的索引一样使用的话,那么object的速度会更快。

  1. 插入

map比object稍微快一点,但是差别不大,如果是插入大量的键值对,那么map的速度会更快。

  1. 删除

在大多数浏览器中,map的删除速度更快,如果涉及大量删除键值对的情况,那么毫无疑问map是首选。


相关文章
|
安全 Linux Shell
用户和组高级操作
本文介绍了Linux系统中用户和组管理的基本操作,包括使用`usermod`命令修改用户属性、使用`passwd`和`usermod`命令禁用和恢复用户账户、使用`userdel`命令删除用户账户、使用`groupadd`、`groupdel`和`groupmod`命令管理组群,以及使用`gpasswd`命令为组群添加用户。此外,还介绍了`su`和`sudo`命令的使用方法,帮助用户在不同身份之间切换。
196 4
|
IDE Java 持续交付
探索开发者工具箱:提升生产力的利器
在软件开发中,选择合适的工具能够显著提升效率和产品质量。本文介绍了开发者常用的工具,包括代码编辑器(如 Visual Studio Code、Sublime Text)、版本控制系统(如 Git、SVN)、集成开发环境(如 IntelliJ IDEA、Eclipse)、调试工具(如 GDB、Chrome DevTools)、构建工具(如 Maven、Webpack)、CI/CD 工具(如 Jenkins、Travis CI)、API 和文档生成工具(如 Swagger、Doxygen),以及项目管理工具(如 Jira、Trello)。
|
并行计算 openCL Ubuntu
Nvidia GeForce GTX 1650不支持OpenGL4.6
本文讨论了Nvidia GeForce GTX 1650显卡不支持OpenGL 4.6的问题。尽管更新了显卡驱动到最新的NVIDIA 512.15版本,并通过nvidia-smi命令确认了CUDA版本,但在检查OpenGL版本时发现它只支持到4.4。文章还提供了参考链接,包括NVIDIA Developer网站上的OpenGL驱动支持信息和其他用户在不同操作系统上更新OpenGL版本的经验。
997 0
Nvidia GeForce GTX 1650不支持OpenGL4.6
|
网络协议 物联网 网络性能优化
物联网江湖风云变幻!MQTT CoAP RESTful/HTTP XMPP四大门派谁主沉浮?
【9月更文挑战第3天】本文概览了MQTT、CoAP、RESTful/HTTP及XMPP四种物联网通信协议。MQTT采用发布/订阅模式,轻量高效;CoAP针对资源受限设备,基于UDP,低延迟;RESTful/HTTP易于集成现有Web基础设施;XMPP支持双向通信,扩展性强。每种协议均附有示例代码,助您根据不同场景和设备特性作出最佳选择。
284 2
|
人工智能 算法 Java
阿里云视觉智能开放平台--人脸识别使用教程
人脸人体识别技术是基于阿里云深度学习算法,结合图像或视频的人脸检测、分析、比对以及人体检测等技术,为您提供人脸人体的检测定位、人脸属性识别和人脸比对等能力。可以为开发者和企业提供高性能的在线API服务,应用于人脸AR、人脸识别和认证、大规模人脸检索、照片管理等各种场景。
阿里云视觉智能开放平台--人脸识别使用教程
参考文献将“et al.”替换为“等”的方法
本文介绍基于EndNote等软件在Word中插入参考文献后,将中文参考文献中的et al.替换为等的方法~
515 1
参考文献将“et al.”替换为“等”的方法
|
SQL Kubernetes Java
使用流水线插件实现持续集成、持续部署
本文将介绍使用流水线插件部署 RuoYi SpringBoot 项目,并实现提交代码后自动构建、自动部署。
文献管理软件EndNote引用格式的自定义修改
本文对EndNote软件修改论文参考文献引用格式的界面与各选项参数加以详细介绍~
884 1
文献管理软件EndNote引用格式的自定义修改
|
消息中间件 存储 Java
MQ 介绍|学习笔记
快速学习 MQ 介绍
692 0
MQ 介绍|学习笔记
|
流计算
(文章复现)电力系统碳排放流的计算方法初探
双碳目标最近在电力系统领域还是挺火的,碳排放流的计算也是比较热门的话题,这篇论文可以说是最基础的模型,被引次数也是很高的,我就写个博客简单复现一下这篇论文,朋友们有需要的可以参考。 参考文献:《电力系统碳排放流的计算方法初探》......