ES6新数据结构Map功能与用法示例


Posted in Javascript onMarch 31, 2017

本文实例讲述了ES6新数据结构Map功能与用法。分享给大家供大家参考,具体如下:

新数据结构Map

JavaScript中对象的本质是键值对的集合,但是键只能是字符串。为了弥补这种缺憾,ES6带来了一种新的数据结构Map。Map也是键值对的集合,只是键不仅可以是字符串还可以是其他数据类型,比如:对象(是不是很神奇)。请看下面例子。

var m = new Map();
var ul = document.getElementsByTagName('ul');
m.set(ul,'hi');
console.log(m.get(ul)); //hi

对于Map的操作有以下几个:

m.set(ul,'content'); //为Map增加成员
m.get(ul);//获取键 ul对应的值
m.has(ul);//返回布尔值,判断是否含有键 ul
m.delete(ul);//删除键 ul,成功返回true,失败返回false
m.size //返回m长度
m.clear(); //清除m所有成员

直接为Map赋初值的方法:

var m = new Map([[li_1,'hello'],[li_2,'world']]);

接受的参数为一个数组,数组内的成员是表示一个一个键值对的数组。如果你蒙了,请看上行代码的实际执行情况:

var li_1 = document.getElementsByTagName('li')[0];
var li_2 = document.getElementsByTagName('li')[1];
var list = [ [li_1,'hello'] , [li_2,'world'] ];
var m = new Map();
list.forEach( ([key,value]) => m.set(key,value) );
console.log(m.get(li_1)); //hello

如果对一个键多次赋值,后面的值会覆盖前面的值。值得注意的是,当键是对象时,必须是引用相同,才认为键是相同的。下面介绍Map的遍历方法。

var ul = document.getElementsByTagName('ul');
var li_1 = document.getElementsByTagName('li')[0];
var li_2 = document.getElementsByTagName('li')[1];
var list = [ [li_1,'hello'] , [li_2,'world'] ];
var m = new Map();
list.forEach( ([key,value]) => m.set(key,value) );
for ( let key of m.keys() ){
  console.log(key);
}
for ( let val of m.values() ){
  console.log(val);
}
for ( let item of m.entries() ){
  console.log(item[0],item[1]);
}
for ( let [key,val] of m.entries() ){
  console.log(key,val);
}
m.forEach( function( val , key , ul ){
  console.log( this ); //ul
  console.log( val , key);
} , ul ); // forEach的第二个参数用于改变匿名函数中this指向

Map与其他数据类型的转换

Map转数据的最简单方式是使用 ... 扩展运算符。例如:

console.log( ...m ); //[li, "hello"] [li, "world"]

Map转对象时,必须所有键都是字符串,使用Object.create()函数。Map转JSON时,要求也要求所有键都是字符串,使用JSON.Stringify()函数。

希望本文所述对大家ECMAScript程序设计有所帮助。

Javascript 相关文章推荐
再谈javascript图片预加载技术(详细演示)
Mar 12 Javascript
JSON相关知识汇总
Jul 03 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
Sep 17 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
Aug 11 Javascript
JS常用函数和常用技巧小结
Oct 15 Javascript
如何判断出一个js对象是否一个dom对象
Nov 24 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
May 03 Javascript
详解ES6之用let声明变量以及let loop机制
Jul 15 Javascript
JS面试题大坑之隐式类型转换实例代码
Oct 14 Javascript
Three.js实现简单3D房间布局
Dec 30 Javascript
原生js实现的移动端可拖动进度条插件功能详解
Aug 15 Javascript
layer.alert回调函数执行关闭弹窗的实例
Sep 11 Javascript
基于AGS JS开发自定义贴图图层
Mar 31 #Javascript
Node.js使用Express创建Web项目详细教程
Mar 31 #Javascript
ES6使用let命令更简单的实现块级作用域实例分析
Mar 31 #Javascript
JS解决移动web开发手机输入框弹出的问题
Mar 31 #Javascript
详解使用JS如何制作简单的ASCII图与单极图
Mar 31 #Javascript
Angularjs中使用指令绑定点击事件的方法
Mar 30 #Javascript
Angualrjs和bootstrap相结合实现数据表格table
Mar 30 #Javascript
You might like
php中chdir()函数用法实例
2014/11/13 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
如何用js控制frame的隐藏或显示的解决办法
2013/03/20 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
2014/06/20 Javascript
JavaScript中标识符提升问题
2015/06/11 Javascript
chrome调试javascript详解
2015/10/21 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
vue2 设置router-view默认路径的实例
2018/09/20 Javascript
详解从vue-loader源码分析CSS Scoped的实现
2019/09/23 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
python动态加载包的方法小结
2016/04/18 Python
详解Python核心对象类型字符串
2018/02/11 Python
pyqt5的QComboBox 使用模板的具体方法
2018/09/06 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
2019/02/28 Python
Python实现打砖块小游戏代码实例
2019/05/18 Python
Django 模型类(models.py)的定义详解
2019/07/19 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
2019/08/27 Python
django 模版关闭转义方式
2020/05/14 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
Python如何将装饰器定义为类
2020/07/30 Python
Python getattr()函数使用方法代码实例
2020/08/10 Python
美国受欢迎的眼影品牌:BH Cosmetics
2016/10/25 全球购物
Sunglasses Shop德国站:欧洲排名第一的太阳镜网站
2017/08/01 全球购物
美国渔具店:FishUSA
2019/08/07 全球购物
服装采购员岗位职责
2014/03/15 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
Python中常见的导入方式总结
2021/05/06 Python
pytorch 实现多个Dataloader同时训练
2021/05/29 Python
MYSQL 运算符总结
2021/11/11 MySQL
JS实现九宫格拼图游戏
2022/06/28 Javascript
Python+pyaudio实现音频控制示例详解
2022/07/23 Python