概要

字典是用来存储不重复key的Hash结构。不同于集合(Set)的一点,字典使用的是[key,value]的形式来存储数据。

JavaScript的对象(Object:{})只能用字符串当做key。使用起来有一定限制。

为了解决这个问题,ES6提供的Map数据结构。它类似与对象,也是[key,value]的集合,但是key的范围不限于字符串,各种类型的值(包括对象)都可以当做key。


也就是说Object结构提供了 “字符串--值”的对应;

Map提供了“值--值”的对应,是一种完善的Hash结构的实现。

如果需要使用键值对的数据结构,Map比Object更合适。

//对于Object只能使用字符串作为key这一点,例如一下代码。

var obj = {},
key1={b:22},
key2={c:33}; obj[key1] = 1;
obj[key2] = 2; //此时key1,key2都会被转成字符串“[object Object]”
console.log(obj); //Object{[object Object] : 2}

使用

1 创建一个Map

const map = new Map([
['a',1],['b',2]
]); console.log(map); // {"a" => 1, "b" => 2}

2 Map 类的属性

console.log(map.size); //字典长度

3 Map 类的方法

set(key,value)

设置一个键值对,然后返回整个Map结构。如果Key已经有值,则键值被更新,否则生成该键。

map里面的key的排序顺序是按照添加的顺序排列的。

map.set('jd','www.jd.com')
.set('baidu','www.baidu.com'); console.log(map);

get(key)

读取key对应的键值,如果找不到key,返回undefined。

console.log(map.get('jd'));  //wwww.jd.com
console.log(map.get('x')); //undefined

delete(key)

删除某个键,成功返回true,失败返回false。

console.log(map.delete('baidu')); // true
console.log(map.delete('baidu')); // false

has(key)

判断某个key是否在map中存在,返回一个布尔值。

console.log(map.has('jd')) //true

clear()

清除所有数据,无返回值

map.clear();
console.log(map); // Map(0) {}

keys()

返回键名的遍历器

const map = new Map([
['jd','www.jd.com'],
['baidu','www.baidu.com']
]);
console.log(map.keys()); // MapIterator {"baidu","jd"}

values()

返回键值的遍历器

console.log(map.values());   // MapIterator {"www.baidu.com","www.jd.com"}

entries

返回键值对的遍历器

console.log(map.entries());   // MapIterator {['jd','www.jd.com'],['baidu','www.baidu.com']}

forEach()

使用回调函数遍历每个成员

map.forEach(function(key,value,map){
console.log(key + ':' + value); // baidu:www.baidu.com
})

es6笔记(5)Map数据结构的更多相关文章

  1. js ES6 Set和Map数据结构详解

    这篇文章主要介绍了ES6学习笔记之Set和Map数据结构,结合实例形式详细分析了ECMAScript中基本数据结构Set和Map的常用属性与方法的功能.用法及相关注意事项,需要的朋友可以参考下   本 ...

  2. es6 Set 和Map 数据结构

    ES6提供了新的数据结构Set,它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个数据结构,用来生成Set 数据结构. const s = new Set(); [2,3,5,4 ...

  3. es6入门7--Set Map数据结构

    本文作为ES6入门第十三章的学习整理笔记,可能会包含少部分个人的理解推测,若想阅读更详细的介绍,还请阅读原文ES6入门 一.set数据结构 1.set不接受重复值 ES6新增了Set构造函数用于创建s ...

  4. ES6 set和map数据结构对对象数组去重简单实现

    自从有了es6的set数据结构,数组的去重可以简单用一行代码实现,比如下面的方式 let arr = [1, 2, 2, 3, 4] function unique (arr) { return [. ...

  5. ES6之前模拟Map数据结构的写法

    在ES6之前JavaScript 里面本身没有map对象,但是用JavaScript的Array.Object来模拟实现Map的数据结构. 现在已经有Map对象了,这里记录一下之前的写法 Array方 ...

  6. ES6中Map数据结构学习笔记

    很多东西就是要细细的品读然后做点读书笔记,心理才会踏实- Javascript对象本质上就是键值对的集合(Hash结构),但是键只能是字符串,这有一定的限制. 1234 var d = {}var e ...

  7. es6学习笔记-set和map数据结构

    ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. const s = new Set(); [2, 3 ...

  8. JavaScript(ES6)学习笔记-Set和Map数据结构(一)

    一.Set 1.ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. , , , , ']); s; // ...

  9. ES6学习笔记(九)Set和Map数据结构

    1.set 基本等于Java的Set集合类型,无序不可重复集,常被用来去重. 基本用法 const s = new Set();//通过Set()构造函数创建 [2, 3, 5, 4, 5, 2, 2 ...

随机推荐

  1. 微软职位内部推荐-Senior Development Lead – Sharepoint

    微软近期Open的职位: SharePoint is a multi-billion dollar enterprise business that has grown from an on-prem ...

  2. hadoop balance工具平衡集群dfs存储及遇到异常Got error, status message Not able to receive block 1073959989 from /192.168.1.37:3004 because threads quota is exceeded

    hadoop集群某个节点dfs存储比其他节点存储高时,一般会使用hadoop提供的balance(start-balancer.sh -threshold 10 )工具来移动高存储节点上的块到低存储节 ...

  3. Daily Scrum - 11/19

    今天任烁帮忙更新了大家在Sprint 2中的Task,基本每人的Task都是细分到每天的,这样大家初期的工作应该会更有效率一点. 任烁今天表示“进度条背词法”应该是可以融合到原有算法中的,期待他的改进 ...

  4. 微软必应词典UWP -2017春

    必应UWP调研,评测 软件平台:windows10 软件名称:微软必应词典 软件类型:UWP Bug Bug1 当在文本框中进行输入时,在谷歌拼音输入法状态下,无法使用Shift键切换到谷歌拼音的纯英 ...

  5. Alpha 冲刺七

    团队成员 051601135 岳冠宇 051604103 陈思孝 031602629 刘意晗 031602248 郑智文 031602234 王淇 会议照片 项目燃尽图 项目进展 无进展!!!! 项目 ...

  6. formidable模块的使用

    Node.js的Formidable模块的使用   今天总结了下Node.js的Formidable模块的使用,下面做一些简要的说明. 1)     创建Formidable.IncomingForm ...

  7. Windows XP 安装使用的序列号

    SP3 X86 MRX3F-47B9T-2487J-KWKMF-RPWBY SP2 X64 B66VY-4D94T-TPPD4-43F72-8X4FY 注意 X64 没有SP3的包 用的是跟 2003 ...

  8. 自定义SAP用户密码规则

    一般实施SAP的公司因为安全性问题都会启用一定规则的用户密码强度,普遍的做法是让Basis在RZ10里面给系统参数做赋值,然后重启服务来实现对所有用户的密码规则的定义.但这样的话对所有用户有效,没办法 ...

  9. 如何在主Form出现之前,弹出密码验证From,Cancel就退出程序,Ok后密码正确才出现主Form

    如何在主Form出现之前,弹出密码验证From,Cancel就退出程序,Ok后密码正确才出现主Form本文地址 :CodeGo.net/5175478/ ----------------------- ...

  10. Java获取当前运行方法所在的类和方法名

    很简单,直接看代码: public void showClassAndMethod() { System.out.println(this.getClass().getSimpleName() + & ...