JS里 new Map()方法介绍

在JavaScript中,new Map() 用于创建一个新的Map对象。Map是一种数据结构,允许你存储键值对,其中任何值(对象和原始值)都可以作为一个键或一个值。

Map对象的特点:

  • 键值对存储:Map是一种键值对的集合,其中每个值都有一个相关联的键。
  • 键的唯一性:Map中的键是唯一的,不允许重复。新的值会覆盖与已存在键相关联的旧值。
  • 键的类型:Map的键可以是任何类型的值,包括基本数据类型、对象和函数。 顺序:Map能够记住键的原始插入顺序。
  • 迭代:Map是可迭代的,可以使用for…of循环或其他迭代方法遍历其键值对。
  • 方法:Map提供了一组方法来操作集合,包括set()用于添加键值对,get()用于获取值,has()用于检查键是否存在,delete()用于删除键值对,size属性用于获取集合的大小,以及clear()用于清空集合。
    new Map() 在 JavaScript 中用于创建一个新的 Map 对象,该对象用于存储键值对的数据结构。以下是关于 new Map() 的详细使用教学:

1. 创建 Map 对象

创建空 Map
let myMap = new Map();
创建带有初始值的 Map
let myMap = new Map([  ['key1', 'value1'],  ['key2', 'value2'],  // ... 可以添加更多的键值对  
]);
//或者
let myMap = new Map();  
myMap.set('key1', 'value1');  
myMap.set('key2', 'value2');  
// ... 可以继续添加键值对

2. Map 对象的方法

set(key, value)
向 Map 对象中添加一个键值对。
如果键已经存在,则更新其对应的值。
myMap.set('key3', 'value3');
get(key)
获取指定键对应的值。
如果键不存在,则返回 undefined
let value = myMap.get('key1'); // value 为 'value1'
has(key)
判断 Map 对象中是否存在指定的键。
存在返回 true,否则返回 false
let hasKey = myMap.has('key2'); // hasKey 为 true
delete(key)
删除指定键及其对应的值。
成功删除返回 true,否则返回 false
let isDeleted = myMap.delete('key1'); // isDeleted 为 true
size
返回 Map 对象中键值对的数量
let size = myMap.size; // size 为剩余键值对的数量
clear()
清空 Map 对象中的所有键值对
myMap.clear(); // myMap 变为空 Map
keys()
返回一个包含 Map 对象中所有键的迭代器。
values()
返回一个包含 Map 对象中所有值的迭代器。
entries()
返回一个包含 Map 对象中所有键值对的迭代器。

3. 迭代 Map 对象

你可以使用 for…of 循环来迭代 Map 对象的键、值或键值对。

// 迭代键  
for (let key of myMap.keys()) {  console.log(key);  
}  
// 迭代值  
for (let value of myMap.values()) {  console.log(value);  
} 
// 迭代键值对  
for (let [key, value] of myMap.entries()) {  console.log(key, value);  
}

4. 注意事项

Map 的键可以是任何类型的值(包括函数、对象或任何原始值)。
Map 会记住键的原始插入顺序。
虽然 for…of 循环在迭代时似乎显示了顺序,但应注意 Map 本身并不保证元素的顺序在所有情况下都是一致的(尽管在大多数现代浏览器和环境中,它们会按照插入顺序进行迭代)。

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

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

相关文章

SWD端口无法连接如何排查

大家在调试GD32 MCU的时候是否也碰到过SWD调试端口无法连接的情况?SWD端口无法连接的原因有很多,有时候排查没有思路,可能会耽误大家的时间,下面小编为大家介绍常见的SWD无法连接的原因,供大家排查参考: 排…

炫技来了!使用SDR设备成功抓到蓝牙air packet, 并且wireshark实时解析, 没错就是蓝牙空口抓包器

本文章主要介绍是用ZYNQ7020AD9361Gnu radio是搭建一个蓝牙抓包器的文章。 由于之前一直做蓝牙Host,对controller觉得是一个比较虚无缥缈的东西,得不到的总是在骚动,所以最近用我用吃灰了2年的SDR(Software Defined Radio)设备研…

C语言scanf( ) 函数、fprintf( ) 函数与 scanf( ) 函数和printf( ) 函数有什么不同?

一、问题 fscanf( ) 函数、fprintf( ) 函数与 printf( ) 函数、scanf( ) 函数的作⽤相似,都是格式化读写函 数,那么这两个读写函数有什么不同呢? 二、解答 两者的区别就在于前⾯的字符“f”,即 fscanfQ函数和 fprintfD函数的读写…

【Java基础】OkHttp 超时设置详解

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

AddressSanitizer理论及实践:heap-use-after-free、free on not malloc()-ed address

AddressSanity:A Fast Address Sanity Checker 摘要 对于C和C 等编程语言,包括缓冲区溢出和堆内存的释放后重用等内存访问错误仍然是一个严重的问题。存在许多内存错误检测器,但大多数检测器要么运行缓慢,要么检测到的错误类型有…

Web前端与REST API:深度解析与实战指南

Web前端与REST API:深度解析与实战指南 在Web开发领域,前端与后端之间的数据交互至关重要,而REST API作为连接两者的桥梁,扮演着不可或缺的角色。本文将从四个方面、五个方面、六个方面和七个方面,深入剖析Web前端与R…

Java基础——数组Array

系列文章目录 文章目录 系列文章目录前言一、数组基本概念二、一维数组三、数组的模型四、数组对象的创建五、元素为引用数据类型的数组 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网…

0104__Linux 中 nm 命令简介

Linux 中 nm 命令简介_linux nm-CSDN博客

c 宏应用举例

1.概要 #include <iostream> //变量可以直接使用 #define fun() a 100; //用变量计算可以 #define fun2(a) a*2; //用变量替换可以 #define fun3(a) d[a] a; //##链接的作用&#xff0c;一般用于链接变量名 #define fun4(type,name) type name##_s 4; //#的作用是转换…

leetcode 所有可能的路径(图的遍历)

leetcode 链接&#xff1a; 所有可能的路径 1 图的基本概念 1.1 有向图和无向图 左边是有向图&#xff0c;右边是无向图。对于无向图来说&#xff0c;图中的边没有方向&#xff0c;两个节点之间只可能存在一条边&#xff0c;比如 0 和 1 之间的边&#xff0c;因为是无向图&am…

【Vue】——组件的注册与引用

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…

中国电子学会(CEIT)2023年12月真题C语言软件编程等级考试三级(含详细解析答案)

中国电子学会(CEIT)考评中心历届真题(含解析答案) C语言软件编程等级考试三级 2023年12月 编程题五道 总分:100分一、因子问题(20分) 任给两个正整数N、M,求一个最小的正整数a,使得a和(M-a)都是N的因子。 时间限制: 10000ms 内存限制: 65536kb 输入 包括两个整…

Go微服务: 关于消息队列的选择和分类以及使用场景

消息队列概述 在分布式系统和微服务架构中&#xff0c;消息队列&#xff08;Message Queue&#xff09;是一个核心组件&#xff0c;用于在不同的应用程序或服务之间异步传递消息在 Go 语言中&#xff0c;有多种实现消息队列的方式&#xff0c;包括使用开源的消息队列服务&…

redis学习路线

待更新… 一、nosql讲解 1. 为什么要用nosql&#xff1f; 用户的个人信息&#xff0c;社交网络&#xff0c;地理位置&#xff0c;自己产生的数据&#xff0c;日志等等爆发式增长&#xff01;传统的关系型数据库已无法满足这些数据处理的要求&#xff0c;这时我们就需要使用N…

零基础入门学用Arduino 第一部分(三)

重要的内容写在前面&#xff1a; 该系列是以up主太极创客的零基础入门学用Arduino教程为基础制作的学习笔记。个人把这个教程学完之后&#xff0c;整体感觉是很好的&#xff0c;如果有条件的可以先学习一些相关课程&#xff0c;学起来会更加轻松&#xff0c;相关课程有数字电路…

KT1404A语音芯片USB连电脑,win7正常识别WIN10无法识别USB设备

一、简介 KT1404A语音芯片画的板子&#xff0c;USB连接电脑&#xff0c;win7可以正常识别到U盘&#xff0c;WIN10提示无法识别USB设备&#xff08;获取设备描述符失败&#xff09;&#xff0c;这是什么问题 问题 首先&#xff0c;这款芯片已经出货非常非常多了&#xff0c;所…

Python基础操作之模块 -- pandas之groupby函数

groupby函数是pandas库中一个非常强大的功能&#xff0c;它允许你根据一个或多个列的值对DataFrame或Series进行分组&#xff0c;并对每个组执行各种聚合操作。 目录 示例详解 1. 导入必要的库和创建DataFrame 2. 使用groupby函数进行分组 3. 遍历分组并查看内容 4. 对分…

【Java】Java18的新特性

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

【Docker】上海交通大学开源镜像站服务变更:Docker 用户需迅速行动

近日&#xff0c;上海交通大学开源镜像站宣布了一个重大变更&#xff0c;对国内Docker用户来说&#xff0c;这一消息无疑具有紧迫性。 镜像站服务的变更 上海交通大学开源镜像站一直是国内Docker用户的重要资源&#xff0c;它提供了快速下载DockerHub仓库镜像的服务。然而&a…

【代码随想录算法训练营第37期 第三十一天 | LeetCode455.分发饼干、376. 摆动序列、53. 最大子序和】

代码随想录算法训练营第37期 第三十一天 | LeetCode455.分发饼干、376. 摆动序列、53. 最大子序和 一、455.分发饼干 解题代码C&#xff1a; class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end(…