javascript Map是什么_与对象有什么区别【教程】

news/2026/1/22 16:47:19/文章来源:https://www.cnblogs.com/smdi/p/19518095

Map 是 JavaScript 中的键值对集合,它和普通对象(Object)都能存键值,但底层机制、行为规则和适用场景完全不同——别用 Object 当 Map 用,尤其当键可能是对象、数字或需要精确顺序时。

Map 的键可以是任意类型,Object 的键只能是字符串或 Symbol

这是最根本的区别。Object 会把非字符串/Symbol 键隐式转成字符串,导致意外覆盖:

const obj = {};
obj[{}] = 'a';
obj[{}] = 'b';
console.log(obj); // { '[object Object]': 'b' } —— 两个空对象被当成同一个键

Map 严格按引用或值比较:

  • Mapnew Map().set({}, 'a').set({}, 'b') 确实存了两个不同键
  • 数字 1 和字符串 '1'Map 中是不同键;在 Object 中,obj[1]obj['1'] 访问的是同一个属性
  • undefinednullNaN 都可作为 Map 的合法键;Object 中 obj[undefined] 实际访问的是 obj['undefined']
Map 保持插入顺序,Object 的属性顺序不总可靠

ES2015+ 规范规定 Map 的遍历顺序严格等于插入顺序,且 keys()values()entries() 全部遵循这一点。

Object 的属性顺序虽然现在多数引擎对字符串键也按插入顺序返回,但存在例外:

  • 数值型字符串键(如 '10''2')会被排序在前,破坏插入顺序
  • 早期代码或某些 polyfill 下行为可能不一致
  • 不能依赖 Object.keys()for...in 的顺序做逻辑判断

如果你需要“先加的先遍历”,用 Map 更稳妥。

Map 的大小和遍历更直接,Object 需要额外处理

Map 提供原生 size 属性和迭代器接口:

const m = new Map();
m.set('a', 1).set('b', 2);
console.log(m.size); // 2
for (const [k, v] of m) console.log(k, v); // 按插入顺序输出

而 Object 要获取键值对数量,得写 Object.keys(obj).length;遍历时要么用 for...in(还要防原型链),要么转成数组再操作,多一层转换开销。

另外:Mapset()get()has()delete() 时间复杂度都是平均 O(1),而 Object 的属性访问虽快,但涉及动态原型链查找或隐藏类变更时,性能边界不如 Map 可控。

什么时候该用 Map,而不是 Object?

不是“哪个更好”,而是“哪个更合适”。以下情况优先选 Map

  • 键不确定类型,比如来自用户输入、DOM 元素、函数、其他对象
  • 需要频繁增删键值对,且关心操作顺序或迭代一致性
  • NaN0 做键(Objectobj[NaN] 等价于 obj['NaN']
  • 构建缓存、映射表、计数器等工具逻辑,尤其是配合 WeakMap 做弱引用时

如果只是静态配置、简单字面量结构、或与 JSON/后端字段强对应(比如 { id: 1, name: 'foo' }),Object 依然更自然、更轻量。

真正容易被忽略的是:Map 不会把键自动转成字符串,也不参与原型链——这意味着你不能用点语法访问,也不能意外继承 toString 等方法。这种“不灵活”,恰恰是它可靠的原因。

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

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

相关文章

哲讯科技:以半导体SAP之道,铸就中国“芯”时代的智能基石

当一粒砂石经过千锤百炼,最终化身为承载数亿晶体管的芯片时,一场静默而深刻的产业变革已悄然发生。在这个以纳米为单位、以全球为舞台的精密制造领域,一粒尘埃足以颠覆整个生产流程,一次供应链中断可能引发全球震荡…

哲讯科技:以半导体SAP之道,铸就中国“芯”时代的智能基石

当一粒砂石经过千锤百炼,最终化身为承载数亿晶体管的芯片时,一场静默而深刻的产业变革已悄然发生。在这个以纳米为单位、以全球为舞台的精密制造领域,一粒尘埃足以颠覆整个生产流程,一次供应链中断可能引发全球震荡…

RAG 为什么总是“看起来能用,实际不好用”?

RAG 真正让人头疼的地方,从来不是“搭不起来” 如果你已经做过一段时间 RAG,大概率会有一种非常熟悉的感觉: 系统是能跑的,流程也是完整的,embedding 用的也不差,向量库、召回、rerank 该有的都有,但整体效果始…

小型精密CNC车床/数控车床哪家好?2026年优质代理商深度评测

在高端制造业向智能化、精密化发展的今天,小型精密CNC车床作为加工微小、复杂、高精度零部件的核心装备,其重要性日益凸显。尤其在3C电子、医疗器械、精密仪器、新能源汽车零部件、半导体设备等新兴产业中,对微型零…

【2026最新】SQL 三种注入方式详解,零基础入门到精通,收藏这一篇就够了_sql注入

SQL 注入原理 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系…

2026年冠金石生产厂家TOP5权威推荐:上海岩首领航高端仿石漆新纪元

一家源于1988年技术沉淀的企业,用“一辈子、一件事、一群人”的专注精神,在西安火车站和银川高铁站的外墙上,让仿石漆的寿命与建筑同步。 当一座建筑的设计理念通过外墙效果得以延伸,材料的选择便成为了决定最终呈…

2026年冠金石生产厂家TOP5权威推荐:上海岩首领航高端仿石漆新纪元

一家源于1988年技术沉淀的企业,用“一辈子、一件事、一群人”的专注精神,在西安火车站和银川高铁站的外墙上,让仿石漆的寿命与建筑同步。 当一座建筑的设计理念通过外墙效果得以延伸,材料的选择便成为了决定最终呈…

塔城塔城乌苏额敏沙湾托里英语雅思辅导机构推荐,2026权威出国雅思课程口碑排行榜

对于塔城地区塔城市、乌苏、额敏、沙湾、托里五市县有雅思备考及留学规划的家庭而言,挑选合适的雅思辅导机构是留学筹备中的核心难题。五市县地域跨度大、边境特色鲜明,优质雅思教学资源主要集中在塔城市团结路商圈、…

C++虚函数实现原理深度解析:从多态到底层机制

一、高频面试题 题目: 请详细阐述C虚函数的实现原理,包括虚函数表、虚函数表指针的概念,以及在单继承、多继承和虚继承场景下的内存布局差异。 二、核心解析答案 1. 基本实现原理 C通过虚函数表(vtable) 和虚函数表…

2026 英语雅思网课一对一辅导平台排行榜:高性价比提分机构权威推荐​

雅思备考之路布满荆棘,考生常陷入 “选课迷茫、提分乏力、方案不适配” 的三重困境。在信息爆炸的市场中,优质教育机构鱼龙混杂,虚假宣传与夸大承诺让考生难以甄别,而缺乏权威全面的深度测评与口碑排名,更让多数人…

2026年轴流风机厂家最新推荐:防爆轴流风机/防腐轴流风机/高压轴流风机/sfb轴流风机/sf轴流风机/wf屋顶轴流风机/选择指南

2026新型轴流风机优质可靠公司推荐榜行业背景与筛选依据据《2026-2030中国工业通风设备行业发展白皮书》数据,2026年国内工业通风设备市场规模突破320亿元,其中新型轴流风机因节能高效、可靠性强,增速达18.7%,远超…

网络安全入门:什么是网络安全?为何它关乎每个人的数字生活?

目录 一、什么是网络安全 二、网络安全为何重要? 1、数据安全 2、保护财务信息 3、遵守法律法规 4、防止网络攻击 三、网络安全常见问题隐患 1、弱密码 2、恶意软件 3、网络钓鱼 4、扫码领礼品 四、预防信息泄露普及 1、加强密码管理 2、保护个人信息…

YOLOv8-Pose 姿态识别 RK3588 实战:从模型训练到 RKNN 部署,精度与推理速度双提升

文章目录 【YOLOv8-pose姿态识别部署至RK3588:模型训练到RKNN落地,让人体姿态分析精度与边缘推理速度双突破】 一、项目背景与技术选型:为何选择YOLOv8-pose+RK3588? 二、环境搭建:从代码仓库到硬件适配 1. 源码获取与工程结构 2. 依赖安装与硬件配置 三、YOLOv8-pose模型…

2026年屋顶、隧道、边墙、混流、排烟风机十大品牌推荐:多区域实力企业务实之选

在 2025 年工业通风规范化与建筑节能要求持续提升的背景下,屋顶风机、排烟风机、离心风机等设备的可靠性、适配性与合规性成为选型核心。基于企业资质、技术合规性、产品实用性及行业口碑的多维度客观梳理,以下推荐 …

全域网络安全防御 健全网络安全防护体系

网络安全基本概念 网络安全(Cyber Security)是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断,使网络处于稳…

YOLOv13 全面教程:MogaBlock 模块原理深度解析与实战修改(手把手教学)

好的,这是一份关于 MSBlock 模块的详细原理讲解和小白友好型安装教程。我们将深入探讨其设计理念、内部机制,并提供手把手的移植步骤。 文章目录 @[toc] 1. 引言:为什么需要多尺度特征? 2. MSBlock 模块概览 2.1 MSBlock 的定位 2.2 整体流程 3. 核心子模块原理详解 3.1 MS…

导师严选2026 AI论文平台TOP9:继续教育写作全攻略

导师严选2026 AI论文平台TOP9:继续教育写作全攻略 2026年AI论文平台测评:为何需要一份精准的推荐榜单 在当前学术研究日益数字化的背景下,AI写作工具已成为高校师生、科研人员提升效率的重要助手。然而,面对市场上琳琅满目的产品&…

高压漏电起痕试验仪

从用户视角看高压漏电起痕试验仪:选购、应用与行业实践 高压漏电起痕试验仪:电气安全的新挑战与用户需求在电气设备日益普及的今天,绝缘材料的安全性能已成为产品设计的核心考量。潮湿、多尘或盐雾环境中的漏电起痕现象,如同电气…

使用onlyoffice预览word、excel、ppt、pdf等,可以双击index.html看效果的demo示例

index.html<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>OnlyOffice 文档预览测试</title&g…

【网络安全】你必须知道的几个网络安全概念

我们大家都知道网络安全的重要性&#xff0c;但对于网络安全相关知识了解的少之又少。今天我们小编就告诉你几个网络安全概念&#xff0c;以便大家了解。 一、安全 Web 网关 安全 Web 网关已经从其过去优化互联网带宽的目的演变为保护用户免受来自互联网的恶意内容的侵害。诸…