ES6 Map的创建、遍历、使用及注意
先导篇
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的创建、遍历、使用及注意相关推荐
- 【Flutter】Dart 数据类型 Map 类型 ( 创建 Map 集合 | 初始化 Map 集合 | 遍历 Map 集合 )
文章目录 一. Dart 数据类型 Map 类型 二. Map 类型初始化并赋值 1. 创建 Map 对象同时进行初始化操作 2. 先创建 Map 对象再进行赋值 三. Map 集合遍历 1. 使用 ...
- ES6 Map数据结构
Map JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键.这给它的使用带来了很大的限制. ES6 提供了 Map 数据结构.它类似于对 ...
- [Java基础]Map集合的遍历
Map集合是Java中非常常用的一个集合,通过Map集合可以实现对数据的快速检索和插入删除等操作:同样对Map集合的遍历也是十分重要的:如果你之前学过C++,那么对于Map的遍历操作可就不能像是C++ ...
- android Map集合的遍历
今天,讲讲Set集合的遍历的使用. 1. Map集合的遍历之 键值对对象找 键和值: package cn.itcast_01;import java.util.HashMap; import jav ...
- 第三次学JAVA再学不好就吃翔(part92)--Map集合的遍历
学习笔记,仅供参考,有错必纠 Map集合的遍历 方法1(利用键找值) 由于Map集合中没有iterator方法,所以如果我们想要遍历Map,则需要先提取出键,拿到Set集合,再利用Set集合的iter ...
- 如何用Map对象创建Set对象
2019独角兽企业重金招聘Python工程师标准>>> Java中的Map和Set有不少相似之处.本文将分享一个把Map类转化成Set类的小技巧. 或许你已经知道,HashSet其实 ...
- Map集合及遍历 debug用法 以及集合的斗地主应用练习 D190326
Map集合及遍历 debug用法 以及集合的斗地主应用练习 第一个独立应用:斗地主,分步骤一点点把项目拆分每一步去完成. 01_第一章:回顾_三种集合的存储方式: 02_第一章:Map集合_常用方法: ...
- 【java】Map集合的遍历方式有几种?
因为下一个博客想写Hashtable集合下的一个子类Properties集合,但是Map集合的遍历方式又有点遗忘了........... 下面通过API来复习一下: 文章目录 1. Map集合的第一种 ...
- map集合的遍历Key
map集合的遍历Key package cn.it.Map; import java.util.HashMap; import java.util.Iterator; import java.util ...
最新文章
- 开源PaaS工具CloudFoundry落地阿里云
- mysql导入数据表越来越慢,快速解决mysql导数据时,格式不对、导入慢、丢数据的问题...
- Cocoa/iPhone App/静态库 嵌入资源文件 rtb v0.1发布
- asp.net 文本框显示xml格式数据_Excel 办公小技巧,查找和替换数据,您值得拥有...
- 目标检测论文阅读:Cascade R-CNN: Delving into High Quality Object Detection(CVPR2018)
- 《C和指针》——指针运算
- AJAX异步-向服务器提交数据
- 微软官方大秀DX12:性能暴涨50%
- websql使用实例
- matlab-高数 meshgrid 笛卡尔乘积(直积)
- virtualbox安装win7_全网最详细的安装eNSP和HCL步骤和出现的问题及解决方法
- JS 截取视频某一帧图片 实现视频截图
- C Primer Plus 第十章学习总结……2015.4.30
- teamViewer远程连接vnp过程
- 不是python文件操作的相关函数_从零开始学Python(七):文件存储I/O流和异常捕捉
- DDR3 CONTROLLER-PHY物理层
- python 获取当前运行的DCC工具
- zz一篇很赞同的文章:2008年以后房价会降?想都不要想
- 寻找大于2^N的最小质数
- 易语言.奇易浏览框模块.入门教程