当前位置: 首页 > news >正文

谈谈es6 Map 函数

发现宝藏

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。


Map 是 ES6 中引入的一种新的数据结构,它类似于对象(Object),但与对象相比,Map 提供了更多的灵活性和功能。Map 用来存储键值对(key-value pairs),并且它的键可以是任何类型,而不仅仅是字符串或符号。相较于普通对象,Map 在很多方面提供了更好的性能和更方便的API。

基本概念

  • Map 是一种集合(collection),其中每个元素都由一个键(key)和一个值(value)组成。
  • Map 中,键和值都是任意类型的,比如:对象、函数、数组等。
  • 与普通对象不同,Map 中的键值对是有序的,即插入的顺序会被保存下来。

创建 Map 实例

let myMap = new Map();  // 创建一个空的 Map 实例

你也可以在创建时直接传入一个二维数组(数组的每个元素是一个由键值对组成的数组)来初始化 Map

let myMap = new Map([['name', 'Alice'],['age', 25],['job', 'developer']
]);

常用方法

1. .set(key, value)

set 方法用于向 Map 添加新的键值对。如果键已经存在,则会更新该键对应的值。

let map = new Map();
map.set('name', 'Alice');
map.set('age', 25);
map.set('job', 'developer');
console.log(map);
// Map(3) { 'name' => 'Alice', 'age' => 25, 'job' => 'developer' }

2. .get(key)

get 方法用于根据键获取对应的值。如果该键不存在,返回 undefined

console.log(map.get('name'));  // 输出 'Alice'
console.log(map.get('address'));  // 输出 undefined

3. .has(key)

has 方法检查 Map 中是否存在某个键,返回 truefalse

console.log(map.has('name'));  // 输出 true
console.log(map.has('address'));  // 输出 false

4. .delete(key)

delete 方法用于删除 Map 中指定键值对。如果该键存在,返回 true,否则返回 false

map.delete('age');
console.log(map.has('age'));  // 输出 false

5. .clear()

clear 方法用于删除 Map 中的所有键值对。

map.clear();
console.log(map.size);  // 输出 0

6. .size

size 是一个属性,用来获取 Map 中键值对的数量。

let map = new Map();
map.set('name', 'Alice');
map.set('age', 25);
console.log(map.size);  // 输出 2

7. .keys(), .values(), .entries()

这些方法分别返回 Map 中所有键、所有值、所有键值对的迭代器。

  • .keys() 返回一个迭代器,包含 Map 中的所有键。
  • .values() 返回一个迭代器,包含 Map 中的所有值。
  • .entries() 返回一个迭代器,包含 Map 中的所有键值对。
let map = new Map([['name', 'Alice'],['age', 25]
]);// 获取所有键
for (let key of map.keys()) {console.log(key);  // 输出 'name', 'age'
}// 获取所有值
for (let value of map.values()) {console.log(value);  // 输出 'Alice', 25
}// 获取所有键值对
for (let [key, value] of map.entries()) {console.log(key, value);  // 输出 'name' 'Alice', 'age' 25
}

8. .forEach(callback)

forEach 方法用于遍历 Map 中的所有键值对,参数是一个回调函数,该函数接收三个参数:valuekeymap

let map = new Map([['name', 'Alice'],['age', 25]
]);map.forEach((value, key) => {console.log(key, value);
});
// 输出:
// name Alice
// age 25

特点总结

  1. 键可以是任意类型Map 的键可以是任何数据类型,包括对象、数组、函数等。
  2. 插入顺序Map 会保持键值对的插入顺序,可以通过 .keys().values().entries() 获取到有序的迭代结果。
  3. 性能优势:相比于对象,Map 在频繁的增删查改操作中通常表现得更好,因为 Map 是为存储键值对而优化的,而对象更多是为了属性访问而设计。
  4. 大小和删除Map 具有 .size 属性,可以随时查询元素的数量;并且可以通过 .delete() 删除单个元素,或者使用 .clear() 删除所有元素。
  5. 更方便的 APIMap 提供了许多方便的内建方法,能够使得对键值对的操作更加灵活和高效。

与对象的区别

  • 键类型:对象的键只能是字符串或符号,而 Map 的键可以是任意类型。
  • 顺序Map 会保留元素的插入顺序,而对象的键并不保证有序。
  • 性能Map 的性能通常更优,尤其是在频繁操作键值对时。

使用场景

Map 适合用于以下情况:

  • 需要频繁对键值对进行增删改查操作。
  • 键的类型不止是字符串或符号。
  • 需要保持插入顺序,或者需要知道元素的个数。

相关文章:

谈谈es6 Map 函数

发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。 Map 是 ES6 中引入的一种新的数据结构,它类似于对象(Object),但与对象相比&#…...

微信小程序:实现节点进度条的效果;正在完成的节点有动态循环效果;横向,纵向排列

参考说明 微信小程序实现流程进度功能 - 知乎 上面的为一个节点进度条的例子&#xff0c;但并不完整&#xff0c;根据上述代码&#xff0c;进行修改完善&#xff0c;实现其效果 横向效果 代码 wxml <view classorder_process><view classprocess_wrap wx:for&quo…...

【Unity3D】无限循环列表(扩展版)

基础版&#xff1a;【Unity技术分享】UGUI之ScrollRect优化_ugui scrollrect 优化-CSDN博客 using UnityEngine; using UnityEngine.UI; using System.Collections.Generic;public delegate void OnBaseLoopListItemCallback(GameObject cell, int index); public class BaseLo…...

MacOS 命令行详解使用教程

本章讲述MacOs命令行详解的使用教程&#xff0c;感谢大家观看。 本人博客:如烟花般绚烂却又稍纵即逝的主页 MacOs命令行前言&#xff1a; 在 macOS 上,Terminal&#xff08;终端) 是一个功能强大的工具&#xff0c;它允许用户通过命令行直接与系统交互。本教程将详细介绍 macOS…...

redis集群安装部署 redis三主三从集群

redis集群安装部署 redis三主三从集群 1、下载redis2、安装redis集群 三主三从3、配置redis开机自启动3.1、建立启动脚本3.2、复制多份redis启动脚本给集群使用3.3、添加可执行权限3.4、配置开机自启动 1、下载redis 本次redis安装部署选择当前最新的稳定版本7.4.1 下载链接: …...

第十二课 Unity 内存优化_内存工具篇(Memory)详解

内存&#xff08;Memory&#xff09; unity 内存部分也是优化过程中非常重要的一个环节&#xff0c;也会影像渲染过程中的同步等待与带宽问题。因此内存的优化也可能会给我们渲染开销带来精简&#xff0c;今天我们先来了解unity中的内存与使用到的内存工具。 Unity中的内存 托…...

达梦8-达梦数据的示例用户和表

1、示例库说明&#xff1a; 创建达梦数据的示例用户和表&#xff0c;导入测试数据。 在完成达梦数据库的安装之后&#xff0c;在/opt/dmdbms/samples/instance_script目录下有用于创建示例用户的SQL文件。samples目录前的路径根据实际安装情况进行修改&#xff0c;本文将达梦…...

数据可视化-1. 折线图

目录 1. 折线图适用场景分析 1. 1 时间序列数据展示 1.2 趋势分析 1.3 多变量比较 1.4 数据异常检测 1.5 简洁易读的数据可视化 1.6 特定领域的应用 2. 折线图局限性 3. 折线图代码实现 3.1 Python 源代码 3.2 折线图效果&#xff08;网页显示&#xff09; 1. 折线图…...

【现代服务端架构】传统服务器 对比 Serverless

在现代开发中&#xff0c;选择合适的架构是至关重要的。两种非常常见的架构模式分别是 传统服务器架构 和 Serverless。它们各有优缺点&#xff0c;适合不同的应用场景。今天&#xff0c;我就带大家一起对比这两种架构&#xff0c;看看它们的差异&#xff0c;并且帮助你选择最适…...

论文学习—VAE

VAE----Auto-Encoding Variational Bayes 2024年12月17日-2024年12月18日摘要引言方法例子&#xff1a;变分自动编码器 2024年12月17日-2024年12月18日 从今天开始&#xff0c;我准备记录自己学习的内容以此来检验我每天的学习量&#xff0c;菜鸡一枚&#xff0c;希望能够与大…...

AI 智能体(AI Agent)到底什么原理?能干什么事情

智能体应用有哪些&#xff1f; 智能体在千行百业中有着广泛的应用&#xff0c;目前已经在 600 多个项目落地和探索&#xff0c;广泛应用于政府与公共事业、交通、工业、能源、金融、医疗、科研等行业。智能体是模拟人类智能的计算机系统&#xff0c;能自主感知环境、智能决策并…...

【mysql】如何查看大表记录行数

目录 1. 使用 ANALYZE TABLE 和 SHOW TABLE STATUS2. 查询 INFORMATION_SCHEMA 表3. 使用索引统计信息4. 维护行数缓存5. 使用分区计数 1. 使用 ANALYZE TABLE 和 SHOW TABLE STATUS 1.ANALYZE TABLE 可以更新表的统计信息&#xff0c;然后使用 SHOW TABLE STATUS 来查看估算的…...

Linux之网络配置

一、检查虚拟机和本机通不通 测试虚拟机和本机是否通不通 winR&#xff0c;运行本机cmd&#xff0c;输入ipconfig&#xff0c;拿到本机ip地址 在虚拟机上ping一下这个地址(ctrlshitv)可以把复制的文本粘贴进虚拟机。 可以看到&#xff0c;不通&#xff0c;解决方法在最后&am…...

SpringBoot集成JWT和Redis实现鉴权登录功能

目前市面上有许多鉴权框架&#xff0c;鉴权原理大同小异&#xff0c;本文简单介绍下利用JWT和Redis实现鉴权功能&#xff0c;算是抛砖引玉吧。 主要原理就是“令牌主动失效机制”&#xff0c;主要包括以下4个步骤&#xff1a; (1)利用拦截器LoginInterceptor实现所有接口登录拦…...

LabVIEW热电偶传感器虚拟仿真实验系统

在教学和科研领域&#xff0c;实验设备的更新和维护成本较高&#xff0c;尤其是在经济欠发达地区&#xff0c;设备的短缺和陈旧化严重影响了教学质量。基于LabVIEW的热电偶传感器虚拟仿真实验系统能够通过模拟实验环境&#xff0c;提供一个成本低廉且效果良好的教学和研究平台。…...

Centos7 部署ZLMediakit

1、拉取代码 #国内用户推荐从同步镜像网站gitee下载 git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit #千万不要忘记执行这句命令 git submodule update --init 2、安装编译器 sudo yum -y install gcc 3、安装cmake sudo yum -y install cmake 4…...

Docker搭建kafka环境

系统&#xff1a;MacOS Sonoma 14.1 Docker版本&#xff1a;Docker version 27.3.1, build ce12230 Docker desktop版本&#xff1a;Docker Desktop 4.36.0 (175267) 1.拉取镜像 先打开Docker Desktop&#xff0c;然后在终端执行命令 docker pull lensesio/fast-data-dev …...

wsl2-ubuntu安装docker后无法拉取镜像

如上是报错全部信息, 这个实际上是因为网络不通导致的, 由于我实在公司使用, 而公司上网需要使用代理, 因此把代理加上就行了. # 为docker服务添加代理 mkdir /etc/systemd/system/docker.service.d cat > /etc/systemd/system/docker.service.d/http-proxy.conf <<…...

Invalid bound statement (not found) 错误解决

出现这个错误提示&#xff1a;Invalid bound statement (not found): com.xxx.small_reservior.dao.WaterRainMapper.getWaterRainByRegion&#xff0c;通常表示 MyBatis 框架无法找到与给定的 getWaterRainByRegion 方法匹配的 SQL 映射语句。这种问题通常发生在以下几种情况中…...

深度学习的下一站:解锁人工智能的新边界

引言&#xff1a;新边界的呼唤 深度学习的诞生&#xff0c;犹如人工智能领域的一次革命&#xff0c;激发了语音助手、自动驾驶、智能医疗等前沿技术的飞速发展。然而&#xff0c;面对现实世界的复杂性&#xff0c;现有的深度学习模型仍然存在数据依赖、可解释性差、环境适应力不…...

LangChain串联DeepSeek时,如何用自定义OutputParser解决‘思考污染’问题?

LangChain串联DeepSeek时如何用自定义OutputParser解决"思考污染"问题 当我们在LangChain框架中串联使用具备"思考过程"输出的推理模型&#xff08;如DeepSeek&#xff09;时&#xff0c;经常会遇到一个棘手的问题&#xff1a;前序节点的思考标签会污染后续…...

Cesium快速入门到精通系列教程八:Primitive和Entity的相似点与不同点

在 Cesium1.95 中,Primitive和Entity是两种创建和管理三维对象的核心方式,它们在功能上有相似之处,但设计目标和使用场景差异明显。以下是详细对比: 一、相似点​​ 1、基础渲染目标​​ 两者均用于在 3D 场景中绘制图形(点、线、面、模型等)。 最终都会通过底层 WebGL…...

文脉定序入门指南:文脉定序镜像更新策略与版本兼容性管理规范

文脉定序入门指南&#xff1a;文脉定序镜像更新策略与版本兼容性管理规范 1. 认识文脉定序系统 文脉定序是一款专门用于提升信息检索精度的智能语义重排序平台。在传统搜索系统中&#xff0c;经常会出现"搜得到但排不准"的问题——系统能找到相关文档&#xff0c;但…...

OpenClaw技能开发入门:为Qwen3-4B定制专属自动化模块

OpenClaw技能开发入门&#xff1a;为Qwen3-4B定制专属自动化模块 1. 为什么需要自定义OpenClaw技能 去年夏天&#xff0c;我接手了一个重复性极高的周报生成工作。每周都要从十几个PDF报告中提取关键数据&#xff0c;整理成固定格式的Excel表格&#xff0c;再转成PPT汇报。当…...

InstantID社区翻译计划:多语言支持的实现与贡献方式

InstantID社区翻译计划&#xff1a;多语言支持的实现与贡献方式 【免费下载链接】InstantID 项目地址: https://ai.gitcode.com/hf_mirrors/InstantX/InstantID InstantID作为一款创新的AI人脸编辑工具&#xff0c;正通过社区翻译计划打破语言壁垒&#xff0c;让全球用…...

Kandinsky-5.0-I2V-Lite-5s实际作品展示:黄昏女孩转头推进镜头高清视频集

Kandinsky-5.0-I2V-Lite-5s实际作品展示&#xff1a;黄昏女孩转头推进镜头高清视频集 1. 惊艳效果开场 Kandinsky-5.0-I2V-Lite-5s带来的动态视觉体验令人惊叹。想象一下&#xff1a;一张静态的黄昏人像照片&#xff0c;在短短几秒内变成了一段生动的短视频——女孩缓缓转头&…...

GLM-4.1V-9B-Base实战教程:跨境电商A+页面图像卖点自动提炼

GLM-4.1V-9B-Base实战教程&#xff1a;跨境电商A页面图像卖点自动提炼 1. 为什么需要自动提炼图像卖点 跨境电商卖家每天需要处理大量商品图片&#xff0c;传统人工标注方式存在三个痛点&#xff1a; 效率低下&#xff1a;一个运营人员每天最多处理50-100张图片成本高昂&…...

STM32环境检测系统设计与物联网应用

1. 项目概述这个基于STM32的环境检测系统是我去年为一个工业客户开发的解决方案&#xff0c;经过3个月的迭代优化已经稳定运行了半年多。系统通过多种传感器实时监测环境参数&#xff0c;并将数据上传至OneNet云平台&#xff0c;实现了本地和远程的双重监控。提示&#xff1a;项…...

效率提升:基于快马平台为dc=y103pc=类参数快速打造调试工具

效率提升&#xff1a;基于快马平台为dcy103&pc类参数快速打造调试工具 在日常开发中&#xff0c;我们经常需要处理各种URL参数&#xff0c;尤其是类似"dcy103&pctest"这样的查询字符串。手动解析和修改这些参数不仅效率低下&#xff0c;还容易出错。最近我在…...

零基础入门Python爬虫:借助快马AI生成你的第一个可运行爬虫脚本

今天想和大家分享一下我作为Python爬虫新手的学习经历。刚开始接触爬虫时&#xff0c;面对各种库和概念真的有点懵&#xff0c;直到发现了InsCode(快马)平台&#xff0c;它让我用自然语言描述需求就能生成可运行的代码&#xff0c;大大降低了入门门槛。 爬虫的基本原理 爬虫就像…...