初步了解了 JS 中 Map 对象

作者: jie 分类: JavaScript 发布时间: 2023-06-13 17:21

在 JS 中,你是通过对象来存储键值对的嘛?你是否使用 JavaScript 对象来存储和管理一组相关数据呢?这些数据由一些具有唯一名称(键)的属性组成,每个属性都有一个值。

如果你的回答是肯定的,那你可能就 OUT 啦~

不出意外的话,你应该是这样来存储和操作键值对的:

const person = {
  name: 'Randal',
  age: 30,
  gender: 'male'
};

if (person.name) console.log('person name:', person.name); // 输出:"Randal"

然而,你可能还不知道,对象的键都是字符串类型的,这在很多时候限制了我们的操作。那么有没有什么更好的解决方案呢?今天,我要介绍的就是 JS 中的 Map!

在 Map 中,键可以是任意类型,包括对象和基本类型。学习、理解 Map 对于我们提高 JS 编程技能来说是非常必要的,也是非常重要的。

1. 再认识一下 JS 的 Map

首先,让我们了解一下在 JS 中,Map 是一种什么样的存在。

Map 是一种键值对的数据结构,Map 对象用来存储键值对,并且键值对的顺序是其插入顺序。这一点,与我们熟知的“对象”之间有明显的区别。对象中的键是无序的,而且键必须是字符串或者符号。

另一方面,Map 允许任意类型的键,而且我们也能很方便地获取 Map 的大小,但是对象的话是不能直接获取的。

2. 创建和初始化 Map

接下来,让我们看看如何创建和初始化一个 Map。

你只需要使用 new 关键字和 Map 构造函数即可。要向 Map 中添加元素,可以使用 Map 提供的 set 方法:

let map = new Map();  // 创建一个新的Map
map.set('name', 'John');  // 向Map中添加一个键值对

这里,set 方法是用来在 Map 中添加或更新一个键值对的。它接收两个参数,第一个参数是键,第二个参数是值。如果键已经存在,则更新其对应的值;如果键不存在,则添加一个新的键值对。

3. 常用的 Map 方法

为了充分利用 Map,我们需要熟练掌握它的常用方法。这些方法包括:

3.1 set(key, value)

在 Map 中添加或更新键值对。如果键已存在,则更新其值;否则,添加新的键值对。这对于管理数据来说非常重要,因为我们经常需要根据特定的键更新数据。

const map = new Map();
map.set('name', 'John');  // 添加键值对 {name: 'John'}
map.set('age', 30);  // 添加键值对 {age: 30}
map.set('name', 'Mike');  // 更新键值对 {name: 'Mike'}
console.log(map);  // 输出 Map { 'name' => 'Mike', 'age' => 30 }

3.2 get(key)

返回指定键的值。如果键不存在,则返回undefined。这个方法可以让我们很方便地获取 Map 中的任何数据。

const map = new Map();
map.set('name', 'John');
console.log(map.get('name'));  // 输出 'John'
console.log(map.get('age'));  // 输出 undefined

3.3 has(key)

返回一个布尔值,表示 Map 中是否存在指定的键。当我们需要检查 Map 中是否已经包含某个键时,这个方法是非常有用的。

const map = new Map();
map.set('name', 'John');
console.log(map.has('name'));  // 输出 true,表示 Map 中存在指定的键
console.log(map.has('age'));  // 输出 false,表示 Map 中不存在指定的键

3.4 delete(key)

删除指定的键值对,如果删除成功,则返回true;否则,返回false。这个方法让我们可以删除不再需要的数据。

const map = new Map();
map.set('name', 'John');
console.log(map.delete('name'));  // 输出 true
console.log(map.delete('age'));  // 输出 false

3.5 clear()

删除Map中的所有键值对。在我们需要重置 Map 或清理所有数据时,这个方法非常有用。

const map = new Map();
map.set('name', 'John');
map.set('age', 30);
map.clear();
console.log(map.size);  // 输出 0,说明 Map 中的键值对都已经被删除

3.6 size

返回 Map 中的键值对数量。这个属性可以让我们了解 Map 当前的大小,有助于我们管理和优化数据。

const map = new Map();
map.set('name', 'John');
map.set('age', 30);
console.log(map.size);  // 输出 2

通过这些代码示例,你可以看到 Map 提供的这些方法是如何灵活地操作 Map 中的键值对的。无论是添加、修改、查询、删除还是清空,都非常方便。

发表回复