ES6中的Map集合

作者: IsaacHHH | 来源:发表于2018-04-14 13:33 被阅读662次

ES6中的Map类型是一种存储着许多键值对的有序列表。其中最为重要的是:Map集合的键名和值支持任意类型的数据

基本语法

// 创建map对象
let map = new Map(); 
// set() 设置键值对
map.set('title', 'map title');
// get() 获取键对应的值, 不存在则返回undefined
map.get('title'); // map title

对与Map集合的基础语法很简单,这里我们需要注意一点是,因为Map集合内支持所有的数据类型,所以我们可以这么做:

let map  = new Map();
let obj1 = {};
let obj2 = {};
map.set(obj1, 1);
map.set(obj2, 2);
// 获取值
map.get(obj1); // 1
map.get(obj2); // 2

这里,我们定义了两个空对象(虽然看起一样,但是完全是两个不同的东西),并将这两个对象作为键名,分别赋值1和2,然后通过get方法去获取刚刚设置的值。整个过程是完全合法的,这在对象中是无法实现的。

当然,这里通过定义一个变量来指向了对应的变量,如果你尝试直接map.set({}, 1)的形式来定义,然后通过map.get({})是无论如何都拿不到的。

到这里,相信我们已经见识到了Map集合确实可以设置任意类型的数据,换句话说,我们以后不再需要修改对象本身就可以为其添加一些附加信息。

Map集合的其他方法

和Set集合一样,Map集合中也有3个通用的方法, 直接看代码:

let map = new Map();
// has(key): 检测键名是否存在
map.has('title');
// delete(key): 删除指定的键名和其值
map.delete('title');
// clear(): //清空所有键值对
map.clear();

除了上面的三个方法,Map集合还有一个size属性,用于表明集合中的键值对数量,可以理解成数组中的length属性。

批量添加

我们知道通过set方法可以为Map集合 添加键值对,但是每添加一次都要写一次set,未免太过麻烦。幸运的是,Map支持批量初始化数据,如同初始化对象和数组一样。

// 通过传入一个二维数组来批量初始化
// let map = new Map([['键名', '值'], ['键名', '值']]);
let map = new Map([['name', 'hxc'], ['age', '22']]);
map.get('name'); //hxc
map.get('age'); // 22

虽然第一眼看起来可能比较混乱,其实理清了很容易理解。批量初始化的时候,我们需要传递一个数组,数组中又包含着多个子数组,子数组中元素个数始终为2,第一个元素为键名,第二个元素为值

之所以这么设计,是因为Map集合支持所有的数据类型,这样做就是为了正确的去初始化数据。

forEach() 方法

Map集合也支持forEach方法,分别接收3个参数:

  • 集合中下一次索引的位置
  • 键名
  • map集合本身

forEach本身并无发杂的语法,这里我们需要知道的是,在遍历过程中,会按照数据插入到Map集合中的先后顺序来遍历,而在数组中,则是按照索引位置。

相关文章

  • ES6中的Set集合

    在ES6中,出现了新的概念:Set集合和Map集合。在ES6之前,数组是JS中唯一的集合类型。如果对数组有深入理解...

  • ES6 笔记 集合

    ES6 中加入了Set, Map, WeakSet, WeakMap 为什么加入集合 Javascript中的Ob...

  • ES6中的Map集合

    ES6中的Map类型是一种存储着许多键值对的有序列表。其中最为重要的是:Map集合的键名和值支持任意类型的数据 基...

  • <<深入理解ES6>>记:七

    第7章 Set集合和Map集合 1.问题描述 2.ES6中的Set集合ES6中新增的Set类型是一种有序列表,其中...

  • 你理解js中map,set,array.from()吗

    1.Js中Map对象的使用(es6新增) Map对象保存键/值对,是键/值对的集合。任何值(对象或者原始值) 都可...

  • js的map对象实现对数组中某一项数据的分组

    1.Js中Map对象的使用(es6新增) Map对象保存键/值对,是键/值对的集合。任何值(对象或者原始值) 都可...

  • ES6迭代器学习笔记

    es6中,加上新增的集合对象已经有了4种(Object,Array,Set,Map),Iterator迭代器是提供...

  • es6-Set集合与Map集合

    title: es6-Set集合与Map集合date: 2018-02-08 21:55:41tags: es6 ...

  • Scala 简明速学04 集合-Map

    Scala 简明速学04 集合-Map Map Scala中Map提供键值对集合。 Map的初始化 Scala中的...

  • JavaSE总结(7)Map

    Collection中的集合称为单列集合,Map中的集合称为双列集合。 一、 java.util.Map...

网友评论

    本文标题:ES6中的Map集合

    本文链接:https://www.haomeiwen.com/subject/gsqlkftx.html