推荐答案
// www.javascriptcn.com code example
// 创建一个新的 Map 对象
const myMap = new Map();
// 使用 set() 方法添加键值对
myMap.set('key1', 'value1');
myMap.set('key2', 'value2');
// 使用 get() 方法获取值
console.log(myMap.get('key1')); // 输出: value1
// 使用 has() 方法检查键是否存在
console.log(myMap.has('key2')); // 输出: true
// 使用 delete() 方法删除键值对
myMap.delete('key1');
// 使用 size 属性获取 Map 的大小
console.log(myMap.size); // 输出: 1
// 使用 clear() 方法清空 Map
myMap.clear();
console.log(myMap.size); // 输出: 0本题详细解读
Map 的基本概念
Map 是 ECMAScript 6 引入的一种新的数据结构,用于存储键值对。与普通的对象不同,Map 的键可以是任意类型的值(包括对象、函数等),而不仅仅是字符串或符号。
常用方法
- set(key, value): 向
Map中添加或更新一个键值对。 - get(key): 根据键获取对应的值,如果键不存在则返回
undefined。 - has(key): 检查
Map中是否存在指定的键,返回布尔值。 - delete(key): 删除
Map中指定的键值对,返回布尔值表示是否删除成功。 - clear(): 清空
Map中的所有键值对。 - size: 获取
Map中键值对的数量。
遍历 Map
Map 提供了多种遍历方式:
- keys(): 返回一个包含所有键的迭代器。
- values(): 返回一个包含所有值的迭代器。
- entries(): 返回一个包含所有键值对的迭代器。
- forEach(callback): 对每个键值对执行回调函数。
// www.javascriptcn.com code example
const myMap = new Map();
myMap.set('a', 1);
myMap.set('b', 2);
// 遍历键
for (let key of myMap.keys()) {
console.log(key); // 输出: a, b
}
// 遍历值
for (let value of myMap.values()) {
console.log(value); // 输出: 1, 2
}
// 遍历键值对
for (let [key, value] of myMap.entries()) {
console.log(`${key} => ${value}`); // 输出: a => 1, b => 2
}
// 使用 forEach 遍历
myMap.forEach((value, key) => {
console.log(`${key} => ${value}`); // 输出: a => 1, b => 2
});与普通对象的区别
- 键的类型:
Map的键可以是任意类型,而普通对象的键只能是字符串或符号。 - 顺序:
Map中的键值对是有序的,按照插入顺序排列,而普通对象的属性顺序是不确定的。 - 性能: 在频繁增删键值对的场景下,
Map的性能通常优于普通对象。
适用场景
- 当需要存储复杂类型的键时,如对象或函数。
- 当需要保持键值对的插入顺序时。
- 当需要频繁增删键值对时。
通过以上方法,你可以有效地使用 Map 来存储和管理键值对。