JavaScript

JavaScript 知识量:26 - 101 - 483

5.3 Map><

基本API- 5.3.1 -

Map是一种键值对集合的数据结构,它允许使用任何类型的键。Map对象保存了键值对,并且能够记住键的原始插入顺序。

JavaScript的Map对象提供了许多基本的API方法来操作和处理键值对集合。以下是一些常用的Map API:

  • set(key, value): 设置一个键值对。如果key已经存在,那么它的值将被更新为value。

  • get(key): 返回键对应的值。如果key不存在,返回undefined。

  • has(key): 返回一个布尔值,表示Map对象是否含有指定的key。

  • delete(key): 删除一个键值对。返回true如果key存在并被成功删除,否则返回false。

  • clear(): 清除Map对象中的所有键值对。

  • size: 返回Map对象中的键值对的数量。

  • forEach(callback[, thisArg]): 对Map对象中的每个键值对执行一次callback函数。

通过这些API可以方便地对Map对象进行各种操作,包括添加、获取、删除键值对,以及遍历整个Map对象等。

创建MAP对象- 5.3.2 -

可以使用new Map()构造函数来创建一个新的Map对象。例如:

const map = new Map();

创建Map后,可以使用set()方法向其中添加键值对,使用get()方法获取键对应的值,使用has()方法检查键是否存在,使用delete()方法删除键值对。例如:

map.set('key1', 'value1');    
map.set('key2', 'value2');    
console.log(map.get('key1')); // 输出: 'value1'      
console.log(map.has('key2')); // 输出: true      
map.delete('key2');

顺序与迭代- 5.3.3 -

Map实例会维护键值对的插入顺序,因此可以根据插入顺序执行迭代操作。

Map对象的entries()方法返回一个新的迭代器对象,它包含了Map对象中每个元素的[key, value]数组。可以使用for...of循环来遍历这个迭代器对象,从而获取Map对象中的每个键值对。例如:

const map = new Map();  
map.set('a', 1);  
map.set('b', 2);  
  
const entries = map.entries();  
for (const [key, value] of entries) {  
  console.log(key, value); // 输出: 'a' 1 'b' 2  
}

这个方法常用于遍历Map对象,并同时处理键和值。

Map与Object的区别- 5.3.4 -

JavaScript中的Object和Map都是用于存储键值对的数据结构,但它们有一些区别。

  1. 键的类型:Object的键只能是字符串或者Symbols,而Map的键可以是任意类型的值(包括函数、对象、基本类型)。

  2. 遍历顺序:Object的属性遍历顺序是不确定的,因为它们是基于实现的(虽然现代浏览器通常会按照对象属性的插入顺序来进行遍历)。而Map则是按照插入顺序来遍历键值对的。

  3. 性能:在频繁增加或删除键值对的场景下,Map通常会比Object有更好的性能。

  4. 方法和API:Map提供了更多的方法和API,例如size、has、delete、clear等。而Object则需要通过in运算符或者Object.prototype上的方法来进行操作。

总的来说,Map提供了更强大和灵活的键值对操作方式,而Object则更常用于简单的属性存储和访问。