JavaScript中Map数据类型的深入剖析

JavaScript中Map数据类型的全面解析

本文对JavaScript中的高级数据类型Map进行详尽的讲解。

本文目录

        • 1. 基础运用
          * 2. 键的独特性
          * 3. 迭代方式
          * 4. 对象与Map的对比
          * 5. 常见操作
          * 6. 应用情境
1. 基础运用
// 创建空的Map
const mapInstance = new Map();

// 创建带有初始值的Map
const userInfoMap = new Map([
  ['name', 'name'],
  [42, 'Answer'],
  [Symbol('id'), 123]
]);

// 添加键值对
mapInstance.set('key1', 'value1');
mapInstance.set({ objKey: 1 }, 'object value'); // 键可以是对象

// 获取值
console.log(userInfoMap.get('name')); // 'name'
console.log(mapInstance.get({ objKey: 1 })); // undefined(引用不同)

// 检查键是否存在
console.log(userInfoMap.has(42)); // true

// 删除键值对
userInfoMap.delete('name');

// 获取大小
console.log(userInfoMap.size); // 2

// 清空Map
mapInstance.clear();
2. 键的独特性

Map采用SameValueZero算法来判断键是否重复(与Set一致):

const mapExample = new Map();
mapExample.set(5, 'number five');
mapExample.set('5', 'string five'); // 允许,类型不同

const objOne = {};
const objTwo = {};
mapExample.set(objOne, 'obj1');
mapExample.set(objTwo, 'obj2'); // 允许,引用不同

console.log(mapExample.size); // 4
3. 迭代方式

Map保留插入顺序,并提供多种迭代途径:

const mapData = new Map([
  ['a', 1],
  ['b', 2]
]);

// 遍历键值对
for (const [key, value] of mapData) {
  console.log(key, value);
}

// 遍历键
for (const key of mapData.keys()) {
  console.log(key);
}

// 遍历值
for (const value of mapData.values()) {
  console.log(value);
}

// 使用forEach
mapData.forEach((value, key) => {
  console.log(`${key}: ${value}`);
});
4. 对象与Map的对比
特性 对象 (Object) Map
键的类型 字符串或 Symbol 任意类型(对象、函数等)
顺序性 不保证顺序(ES2015+ 字符串键按插入顺序,但非强制) 保持插入顺序
大小 需要手动计算(如 Object.keys(obj).length 直接通过 size 属性获取
迭代 需要先获取键数组(如 Object.keys() 直接支持 for...offorEach
默认键 原型链上的键(如 toString 无默认键
性能 大量键值对时操作效率较低 插入、删除、查找操作更高效
5. 常见操作
// 1. 对象转Map
const objData = { a: 1, b: 2 };
const mapFromObj = new Map(Object.entries(objData));

// 2. Map转对象
const newObject = Object.fromEntries(mapFromObj); // ES2019+

// 3. 合并Map
const combinedMap = new Map([...mapOne, ...mapTwo]);

// 4. 复制Map
const clonedMap = new Map(mapFromObj);

// 5. 检查是否包含所有键
function containsAllKeys(mapInstance, keyList) {
  return keyList.every(key => mapInstance.has(key));
}
6. 应用情境
// 1. 缓存计算结果
const cacheStore = new Map();
function performCalculation(key) {
  if (cacheStore.has(key)) {
    return cacheStore.get(key);
  }
  const result = timeConsumingOperation(key);
  cacheStore.set(key, result);
  return result;
}

// 2. 事件注册表(键为元素,值为事件处理函数)
const eventRegistryMap = new Map();
const targetElement = document.getElementById('btn');
eventRegistryMap.set(targetElement, () => { /* 处理函数 */ });

// 3. 统计频率
const frequencyMapInstance = new Map();
['a', 'b', 'a', 'c'].forEach(item => {
  frequencyMapInstance.set(item, (frequencyMapInstance.get(item) || 0) + 1);
});
// 结果: Map { 'a' => 2, 'b' => 1, 'c' => 1 }
← 上一篇 AngularJS知识快速入门(上) 记得点赞、关注、收藏哦! 下一篇 Ajax——在OA系统提升性能的局部刷新 →

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/13593.html

(0)
LomuLomu
上一篇 2025 年 9 月 17 日
下一篇 2025 年 9 月 18 日

相关推荐

  • 永久破解idea 2026年,附激活码

    申明:本教程 IntelliJ IDEA 破解补丁、激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除。若条件允许,希望大家购买正版 ! IDEA是 JetBrains 推出的开发编辑器,功能强大,适用于 Windows、Mac 和 Linux 系统。本文将详细介绍如何通过破解补丁实现永久激活,解锁所有高级功能。 不管你是什么版本、什么…

    IDEA破解教程 2026 年 1 月 24 日
    15000
  • 永久datagrip激活码下载+最新datagrip破解工具

    申明:本教程 DataGrip破解补丁、激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除。若条件允许,希望大家购买正版 ! DataGrip是 JetBrains 推出的开发编辑器,功能强大,适用于 Windows、Mac 和 Linux 系统。本文将详细介绍如何通过破解补丁实现永久激活,解锁所有高级功能。 如果觉得破解麻烦,可以购买…

    DataGrip激活码 2026 年 1 月 25 日
    4300
  • pycharm破解更新日志及pycharm激活码说明

    声明:本文提供的 PyCharm 破解补丁与激活码均源自网络,仅供个人学习与研究,禁止商业用途。若遇侵权,请第一时间联系作者删除。条件允许时,请支持正版! PyCharm 是 JetBrains 出品的一款跨平台 IDE,Windows、macOS、Linux 均可流畅运行。下文将以 2025.2 版本为例,手把手演示如何借助破解补丁实现永久授权,解锁全部高…

    PyCharm激活码 2025 年 11 月 30 日
    25300
  • 🚀 2025年最新IDEA激活码分享 | 永久破解IDEA教程(100%有效)

    最近JetBrains发布了IDEA 2025.1新版本,很多小伙伴升级后发现需要重新激活了!😱 网上各种方法试了个遍都不行?别担心,经过多次测试,我终于找到了一套简单高效的破解方案,适用于所有版本和操作系统!💪 🔍 准备工作 在开始之前,强烈建议:- 卸载非官网下载的IDEA(可能包含恶意补丁)- 清除之前的所有破解尝试- 访问IDEA官网下载最新安装包 …

    2025 年 6 月 5 日
    3.1K00
  • 无需手机号注册clion激活码,零基础学会clion破解教程

    申明:本教程Clion破解补丁、激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除。若条件允许,希望大家购买正版 ! 废话不多说,先上 Clion2025.2.1 版本破解成功的截图,如下图,可以看到已经成功破解到 2099 年辣,舒服的很! 接下来就给大家通过图文的方式分享一下如何破解最新的Clion。 准备工作 注意:如果你之前用过…

    2025 年 12 月 24 日
    6900

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信