欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ES6中的Map集合

程序员文章站 2023-12-21 23:15:28
...

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集合中的先后顺序来遍历,而在数组中,则是按照索引位置。

上一篇:

下一篇: