ES6新增了 Map数据结构,Map对象保存键值对,任何值(原始值或对象)都可以作为一个键或一个值。

基本用法

let map = new Map();
let obj = {name: 'Leon',sex: 'male'
};
map.set(obj,'myObject');
map.get(obj); // "myObject"
map.has(obj) //true
map.delete(obj) //true
map.has(obj) // false

实例的属性和操作方法

set(key,value):

set方法设置键名key对应的键值为value,然后返回整个 Map 结构。

let map = new Map();
map.set('dsssddddddddsdsdsdssfw',8);
map.set({a:1},'ddsdsds');

get(key):

获取key的值

map.get('dsssddddddddsdsdsdssfw')//8

has(key)

has方法返回一个布尔值,表示某个键是否在当前 Map 对象之中。

map.has('dsssddddddddsdsdsdssfw'); //true

delete(key)

delete方法删除某个键,返回true。如果删除失败,返回false。

map.delete('dsssddddddddsdsdsdssfw');
map.has('dsssddddddddsdsdsdssfw')//false

clear()
清空Map对象

map.size // 2
map.clear()
map.size // 0

遍历方法

方法 作用
keys() 返回键名的遍历器
values() 返回键值的遍历器
entries() 返回所有成员的遍历器
forEach() 遍历 Map 的所有成员
const map = new Map([['F', 'no'],['T',  'yes'],
]);for (let key of map.keys()) {console.log(key);
}
// "F"
// "T"for (let value of map.values()) {console.log(value);
}
// "no"
// "yes"for (let item of map.entries()) {console.log(item[0], item[1]);
}
// "F" "no"
// "T" "yes"// 或者
for (let [key, value] of map.entries()) {console.log(key, value);
}
// "F" "no"
// "T" "yes"// 等同于使用map.entries()
for (let [key, value] of map) {console.log(key, value);
}
// "F" "no"
// "T" "yes"

与其他数据结构的互相转换

Map转为数组

const myMap = new Map().set(true, 7).set({foo: 3}, ['abc']);
[...myMap]
// [ [ true, 7 ], [ { foo: 3 }, [ 'abc' ] ] ]

数组 转为 Map

new Map([[true, 7],[{foo: 3}, ['abc']]
])

Map 转为对象

function strMapToObj(strMap) {let obj = Object.create(null);for (let [k,v] of strMap) {obj[k] = v;}return obj;
}const myMap = new Map().set('yes', true).set('no', false);
strMapToObj(myMap)

对象转为 Map

function objToStrMap(obj) {let strMap = new Map();for (let k of Object.keys(obj)) {strMap.set(k, obj[k]);}return strMap;
}objToStrMap({yes: true, no: false})

参考:
http://es6.ruanyifeng.com/#docs/set-map#Map

ES6中 Map 数据结构相关推荐

  1. ES6中Map与对象、数组,JSON之间的相互转换

    Map转为数组 const map = new Map(); map.set(1,"foo").set(2,"bar").set(3,"baz&quo ...

  2. es6 获取对象的所有值_前端开发必备 - ES6 新特性之 Set和Map数据结构

    往期回顾: 前端开发必备 - ES6 新特性之 let 和 const 命令 前端开发必备 - ES6 新特性之 变量的解构赋值 前端开发必备 - ES6 新特性之 字符串的拓展 前端开发必备 - E ...

  3. ES6之路第九篇:Set和Map数据结构

    set 基本用法 ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. 1 const s = new S ...

  4. php 数据类型 map,es6中Set和Map的对比介绍(附代码)

    本篇文章给大家带来的内容是关于es6中Set和Map的对比介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Set 1.add()方法和size属性{ let list ...

  5. ES6 (十三)Set 和 Map 数据结构、WeakSet 和 WeakMap、WeakRef、FinalizationRegistry

    ES6 (十三)Set 和 Map 数据结构.WeakSet 和 WeakMap.WeakRef.FinalizationRegistry 文章目录 ES6 (十三)Set 和 Map 数据结构.We ...

  6. ES6中的Map和Set详解

    概览 本文主要介绍了 ES6新增的Set和Map 数据结构,对其特性和常见用法进行了梳理 一. Set Set是ES6中新增的数据结构,它类似于数组,但是Set数据中的元素都是唯一的,没有重复值的; ...

  7. es6中的map方法

    es6中的map方法 一.简单的说明 map是一种数据结构,类似于对象,但是里面的键的值可以是各种类型,包括对象也行 //声明Maplet m = new Map();m.set('name','zh ...

  8. 【ES6】JS的Set和Map数据结构

    [ES6]JS的Set和Map数据结构 一.Set 1.基本用法 2.4种操作方法 3.4种遍历方法 4.Set的应用 1)Set转化为数组 2)去除数组的重复元素 3)实现并集(Union).交集( ...

  9. ES6 Map数据结构

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

最新文章

  1. Pandas数据处理实战:福布斯全球上市企业排行榜数据整理
  2. linux x window system下载,为Ubuntu 添加 KDE X WINDOW SYSTEM
  3. SpringBoot实用小技巧之动态设置SpringBoot日志级别 1
  4. C语言函数返回1和返回0究竟哪个好?
  5. SDOI2017R1(姑且是游记)
  6. 从gb2py.idx中获取一个汉字的拼音首字母
  7. CVE-2021-34527: Windows Print Spooler 蠕虫级远程代码执行漏洞
  8. 安装ipython(一分钟读懂)
  9. python 操作oracle 执行脚本_CentOS 7定时执行python脚本
  10. windows上java调用gdal.jar报错
  11. Java基础Arrays类
  12. Db4o数据库:快速入门
  13. js 字符串常用方法 切割 搜索 验证 替换
  14. layui框架——弹出层layer
  15. LabVIEW虚拟数字示波器
  16. 阿里云国际版短信发送
  17. 正大国际期货:什么是黄金保证金交易?黄金保证金交易包含哪些要点?
  18. Linux安装jdk报错:package jdk-16.0.2-2000:16.0.2-ga.aarch64 is intended for a different architecture
  19. Centos7 安装Chrome浏览器
  20. 2013年各大小IT公司待遇,绝对真实,一线数据!(初版)

热门文章

  1. 奇虎360WEB平台部招贤纳士之产品经理、开发工程师
  2. 求出所有这些四位数是素数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b中的四位数按从小到大的顺序进行排序
  3. redis sds的申请扩容源码
  4. Mybatis动态sql语句的生成
  5. linux 服务器间通信,Linux 下的进程间通信:套接字和信号 | Linux 中国
  6. gbrl参数_grbl-0.9运行参数配置说明
  7. golang new和make却别
  8. 使用 Redis的SETNX命令实现分布式锁
  9. rcp异步多参数实例
  10. RocketMQ有哪些消息类型?springboot如何整合rocketMQ