jsmap数据结构.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
jsmap数据结构 数据结构 Map 对象保存键值对,并且能够记住键的原始插⼊顺序。任何值(对象或者) 都可以作为⼀个键或⼀个值。 map对象常⽤于保存键值对,它的键是任意数据类型,常⽤于建⽴数据的映射关系 和对象的区别:Object对象的key只能是字符串或者Symbol,map的key可是是任意数据类型;Map的key是有序的;map的键值对个数通过 size属性获取,对象只能⾃⼰统计 new Map(params)构造函数params可以接收⼆维数组"null"undefined;注意传⼊null"undefined其实也就相当于不传参数,直接new Map() 1.初始化 初始化map对象的三种⽅式 对象的三种⽅式 // 初始化map的三种⽅式 const map1 = new Map() map1.set(60, '及格') map1.set(80, '良') map1.set(90, '优秀') // 第⼆种⽅式 set⽅法返回的是当前map对象,因此可以采⽤链式写法 const map2 = new Map().set(60, '及格').set(80, '良').set JavaScript中的Map数据结构是ES6引入的一种新的数据存储方式,它与传统的Object对象有显著区别。Map对象主要用于保存键值对,其特点是键可以是任意数据类型,而不仅仅是字符串或Symbol,这使得Map在处理非字符串键时非常方便。此外,Map的键值对插入顺序会被记住,因此它是有序的,而Object的属性顺序则不固定。 初始化Map对象有三种常见方法: 1. 直接创建一个空Map对象,然后通过`set`方法逐个添加键值对: ```javascript const map1 = new Map(); map1.set(60, '及格'); map1.set(80, '良'); map1.set(90, '优秀'); ``` 2. 使用链式写法,通过`set`方法一次性设置多个键值对: ```javascript const map2 = new Map() .set(60, '及格') .set(80, '良') .set(90, '优秀'); ``` 3. 传入二维数组作为构造函数的参数: ```javascript const map3 = new Map([[60, '及格'], [80, '良'], [90, '优秀']]); ``` 错误的初始化Map的方式是使用方括号来定义键值对,如`wrongMap['bla'] = 'blaa'`。虽然这样也能生成一个Map对象,但会导致所有Map的方法无法正常工作,因为它们不是通过`set`方法添加的。 Map对象的键具有唯一性,即使是引用类型的键,也只会在内存地址相同的情况下被视为同一个键。例如,如果两次使用了不同的空对象实例作为键,它们会被视为不同的键。对于基本数据类型,只要它们严格相等(使用`===`比较),Map就会将它们视为同一个键。`undefined`和`null`被视为不同的键。 以下是一些示例来演示Map的键值操作: ```javascript let myMap = new Map(); let keyObj = {}; let keyFunc = function () {}; let keyArr = []; let keyString = 'a string'; let strNum = '0'; // 添加键 myMap.set(keyString, "和键'a string'关联的值"); myMap.set(keyObj, "和键keyObj关联的值"); myMap.set(keyArr, "和键keyArr关联的值"); myMap.set(keyFunc, "和键keyFunc关联的值"); myMap.set(strNum, "和键strNum关联的值"); myMap.set(null, '和null key关联的值'); myMap.set(undefined, '和 undefined key关联的值'); console.log(myMap.get(keyObj)); // "和键keyObj关联的值" console.log(myMap.get(keyArr)); // "和键keyArr关联的值" console.log(myMap.get(keyFunc)); // "和键keyFunc关联的值" console.log(myMap.get(strNum)); // "和键strNum关联的值" console.log(myMap.get(keyString)); // "和键'a string'关联的值" console.log(myMap.get({})); // undefined,因为与keyObj不是同一个对象 console.log(myMap.get([])); // undefined,因为与keyArr不是同一个数组 console.log(myMap.get(function () {})); // undefined,因为与keyFunc不是同一个函数 console.log(myMap.get(0)); // undefined,因为与strNum是不同类型的键 console.log(myMap.get(undefined)); // "和 undefined key关联的值" ``` Map对象的大小可以通过`size`属性获取,例如`myMap.size`将返回Map中的键值对数量。这与Object不同,Object通常需要自行计算属性数量。 Map还有其他一些方法,如`get`, `has`, `delete`, `clear`, `forEach`等,用于检索、检查、删除键值对以及遍历Map。这些方法使得Map成为处理复杂数据结构和映射关系的理想选择。Map是JavaScript中一种强大且灵活的数据结构,它弥补了Object在处理键值对时的一些局限性。
































- 粉丝: 205
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- update9-20250731.5.209.slice.img.7z.001.pd
- 基于COMSOL仿真的光学波导传输技术研究:光纤波导三维弯曲、模场分布及损耗分析
- 基于距离和方位的多智能体编队分布式控制:原理、仿真与稳定性分析 - 多智能体系统
- 基于MATLAB Simulink的高频隔离DAB-双有源全桥DC-DC变换器仿真模型,实现电压电流双闭环与ZVS软开关,功率双向流动的学习交流使用 MATLAB
- 基于S7-200 PLC和MCGS组态的灌装贴标生产线系统解析 梯形图程序、接线图原理图和组态画面
- CarSim与Simulink联合仿真实现基于MPC的超车换道路径动态规划及实时检测
- Django框架多模态知识图谱智能旅游推荐系统Python源码SQL数据库详细注释毕设新项目
- 崔帕斯T1080电脑调音软件下载
- AI辅导员问答信息word文档
- 番茄钟html版的源码
- update9-20250731.5.209.slice.img.7z.002
- 基于 OpenMV 和 STM32 的循迹小车
- 崔帕斯T1980电脑调音软件下载
- 基于COMSOL仿真的光学手性BIC在光子晶体板中的连续域束缚态及琼斯矩阵透射谱分析
- 电力电子领域LLC谐振变换器Simulink仿真的电压电流双环竞争控制策略及其实现 LLC谐振变换器 说明


