ES6新数据结构Map功能与用法示例
发布时间 - 2026-01-11 00:27:34 点击率:次本文实例讲述了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程序设计有所帮助。
# ES6
# 数据结构
# Map
# 浅谈es6 javascript的map数据结构
# 详解ES6中的 Set Map 数据结构学习总结
# ES6新特性五:Set与Map的数据结构实例分析
# ES6学习笔记之Set和Map数据结构详解
# JavaScript中的Map数据结构详解
# 都是
# 键值
# 的是
# 几个
# 如果你
# 还可以
# 遍历
# 不是很
# 带来了
# 第二个
# 给大家
# 最简单
# 所述
# 程序设计
# 执行情况
# 蒙了
# 运算符
# 判断是否
# 转数
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
EditPlus中的正则表达式实战(6)
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
JavaScript如何实现路由_前端路由原理是什么
Laravel如何实现用户注册和登录?(Auth脚手架指南)
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
如何快速生成高效建站系统源代码?
如何续费美橙建站之星域名及服务?
lovemo网页版地址 lovemo官网手机登录
高性价比服务器租赁——企业级配置与24小时运维服务
浅谈Javascript中的Label语句
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
js实现获取鼠标当前的位置
Laravel如何实现多对多模型关联?(Eloquent教程)
香港服务器选型指南:免备案配置与高效建站方案解析
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
Laravel如何实现模型的全局作用域?(Global Scope示例)
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
高防服务器租用指南:配置选择与快速部署攻略
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
Laravel如何与Inertia.js和Vue/React构建现代单页应用
新三国志曹操传主线渭水交兵攻略
Laravel如何实现API版本控制_Laravel版本化API设计方案
如何在宝塔面板中创建新站点?
Laravel如何使用Collections进行数据处理?(实用方法示例)
中山网站制作网页,中山新生登记系统登记流程?
java获取注册ip实例
Linux系统运维自动化项目教程_Ansible批量管理实战
Laravel如何实现一对一模型关联?(Eloquent示例)
iOS UIView常见属性方法小结
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
音响网站制作视频教程,隆霸音响官方网站?
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
在线教育网站制作平台,山西立德教育官网?
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
Laravel如何使用Telescope进行调试?(安装和使用教程)
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
进行网站优化必须要坚持的四大原则
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
Laravel如何实现数据库事务?(DB Facade示例)
公司门户网站制作流程,华为官网怎么做?
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
,怎么在广州志愿者网站注册?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】

