初步了解了 JS 中 Map 对象
在 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 中的键值对的。无论是添加、修改、查询、删除还是清空,都非常方便。