先导篇

 JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串或者 symbol 来作为键名,这给它的使用带来了很大的限制。Map 类似于对象,都用于存储 key-value 结构的数据,Map 与对象最大的差别就在于它可以以各种数据类型作为键名。

对象的key必须是字符串。如果想映射为其它类型,它会默默转化为字符串,没有任何提示。

有这样一种情况:如果创建的key是两个html元素,在为对象赋值的时候,健会被转换为字符串,因为对象的key必须是字符串,这意味着当视图使用非字符串类型如HTML元素作为key时,其值被toString方法静默转换为字符串类型。HTML元素转换为字符串后的值为[object HTMLDivElement],第1个元素的数据信息被存储在[object HTMLDivElement]属性中。接着,当试图为第二个元素创建映射时,发生了相同的过程。第2个元素也是HTML元素,也被转换成为字符串,对应的数据也被存储在[object HTMLDivElement]属性上,覆盖了第一个元素的值。由于这两个原因:原型继承属性以及key仅支持字符串,所以通常不能使用对象作为map。由于这种限制,ECMAScript委员会定义了一个全新的类型Map。
原文链接

创建Map

let myMap=new Map()//创建map结构

使用set创建key对应的value:

直接创建key和value
作为构造函数,Map 也可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组

以上是我的错误示范和正确示范,一定要注意参数是数组,每一个健值对也是数组! ==注:forEach的回调函数第一个参数为value,第二个为key。==

遍历Map

直接上图去发现吧:

如果是这样解构,key和value是正常顺序的健值

如果使用forEach遍历时候只穿一个参数,那么只输出value:

mapp.keys()返回的是一个对象,而不是数组,不能直接forEach,如果要遍历,需要借助for循环 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f201e5e9d4ac480d81c991bdddeeb56a.png)

手写map

function MyMap() {this.element = new Array()//获取map元素个数this.size = function () {return this.element.length}//判断map是否为空this.isEmpty = function () {return this.element.length < 1}//删除map所有元素this.clear = function () {this.element = new Array()}//删除指定元素,才知道delete方法是有返回值的this.delete = function (_key) {console.log(this.element, _key)try {for (let i = 0; i < this.element.length; i++) {let item = this.elementif (item[i].key === _key) {this.element.splice(i, 1)return true}}} catch {return false}return false}//增加元素this.set = function (key, value) {this.element.push({key: key,value: value})}//获取元素this.get=function(_key){for(let i=0;i<this.element.length;i++){if(this.element[i].key===_key){return this.element[i].value}}return null}//获取map中所有keythis.keys=function(){let arr=new Array()for(let i=0;i<this.element.length;i++){arr.push(this.element[i].key)}return arr}//获取map中所有valuethis.values=function(){let arr=new Array()for(let i=0;i<this.element.length;i++){arr.push(this.element[i].value)}return arr}
}
let mymap = new MyMap()
mymap.set('a',1)
mymap.set('b',2)
console.log(mymap.get('b'))
console.log(mymap.keys())
console.log(mymap.values())

delete方法的返回值:删除成功返回true,失败返回false:

这是其他博主分享的js创建map对象方法,大家可以对比学习!

ES6 Map的创建、遍历、使用及注意相关推荐

  1. 【Flutter】Dart 数据类型 Map 类型 ( 创建 Map 集合 | 初始化 Map 集合 | 遍历 Map 集合 )

    文章目录 一. Dart 数据类型 Map 类型 二. Map 类型初始化并赋值 1. 创建 Map 对象同时进行初始化操作 2. 先创建 Map 对象再进行赋值 三. Map 集合遍历 1. 使用 ...

  2. ES6 Map数据结构

    Map JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键.这给它的使用带来了很大的限制. ES6 提供了 Map 数据结构.它类似于对 ...

  3. [Java基础]Map集合的遍历

    Map集合是Java中非常常用的一个集合,通过Map集合可以实现对数据的快速检索和插入删除等操作:同样对Map集合的遍历也是十分重要的:如果你之前学过C++,那么对于Map的遍历操作可就不能像是C++ ...

  4. android Map集合的遍历

    今天,讲讲Set集合的遍历的使用. 1. Map集合的遍历之 键值对对象找 键和值: package cn.itcast_01;import java.util.HashMap; import jav ...

  5. 第三次学JAVA再学不好就吃翔(part92)--Map集合的遍历

    学习笔记,仅供参考,有错必纠 Map集合的遍历 方法1(利用键找值) 由于Map集合中没有iterator方法,所以如果我们想要遍历Map,则需要先提取出键,拿到Set集合,再利用Set集合的iter ...

  6. 如何用Map对象创建Set对象

    2019独角兽企业重金招聘Python工程师标准>>> Java中的Map和Set有不少相似之处.本文将分享一个把Map类转化成Set类的小技巧. 或许你已经知道,HashSet其实 ...

  7. Map集合及遍历 debug用法 以及集合的斗地主应用练习 D190326

    Map集合及遍历 debug用法 以及集合的斗地主应用练习 第一个独立应用:斗地主,分步骤一点点把项目拆分每一步去完成. 01_第一章:回顾_三种集合的存储方式: 02_第一章:Map集合_常用方法: ...

  8. 【java】Map集合的遍历方式有几种?

    因为下一个博客想写Hashtable集合下的一个子类Properties集合,但是Map集合的遍历方式又有点遗忘了........... 下面通过API来复习一下: 文章目录 1. Map集合的第一种 ...

  9. map集合的遍历Key

    map集合的遍历Key package cn.it.Map; import java.util.HashMap; import java.util.Iterator; import java.util ...

最新文章

  1. 开源PaaS工具CloudFoundry落地阿里云
  2. mysql导入数据表越来越慢,快速解决mysql导数据时,格式不对、导入慢、丢数据的问题...
  3. Cocoa/iPhone App/静态库 嵌入资源文件 rtb v0.1发布
  4. asp.net 文本框显示xml格式数据_Excel 办公小技巧,查找和替换数据,您值得拥有...
  5. 目标检测论文阅读:Cascade R-CNN: Delving into High Quality Object Detection(CVPR2018)
  6. 《C和指针》——指针运算
  7. AJAX异步-向服务器提交数据
  8. 微软官方大秀DX12:性能暴涨50%
  9. websql使用实例
  10. matlab-高数 meshgrid 笛卡尔乘积(直积)
  11. virtualbox安装win7_全网最详细的安装eNSP和HCL步骤和出现的问题及解决方法
  12. JS 截取视频某一帧图片 实现视频截图
  13. C Primer Plus 第十章学习总结……2015.4.30
  14. teamViewer远程连接vnp过程
  15. 不是python文件操作的相关函数_从零开始学Python(七):文件存储I/O流和异常捕捉
  16. DDR3 CONTROLLER-PHY物理层
  17. python 获取当前运行的DCC工具
  18. zz一篇很赞同的文章:2008年以后房价会降?想都不要想
  19. 寻找大于2^N的最小质数
  20. 易语言.奇易浏览框模块.入门教程

热门文章

  1. 如何从零开始搭建服务器
  2. 利用winform 操作access 数据库
  3. 2023ICPC西安邀请赛
  4. 基于CH340的一键下载电路
  5. MongoDB使用用户登录访问
  6. 这个夏天,你一定要来一次云台山
  7. linux kernel.sem参数,kernel.sem参数的设置
  8. android 酷狗demo_酷狗音乐Android客户端详细使用评测
  9. 网页实现 在线咨询(联系客服)
  10. WEEX框架(一)框架简介和快速上手体验