• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共299篇

    前端 - Javascript

关闭

返回栏目

关闭

返回前端 - Javascript栏目

93 - 内置对象 - Map 对象 - 映射的遍历与操作

作者:

贺及楼

成为作者

更新日期:2025-02-21 18:56:13

前端 - Javascript 《内置对象 - Map 对象 - 映射的遍历与操作》

在 JavaScript 的世界里,Map 对象就像是一个超级强大的收纳盒,它可以帮助我们高效地存储和管理键值对数据。今天,我们就来深入探讨一下 Map 对象的遍历与操作,看看这个“收纳盒”到底有多厉害!

一、Map 对象简介

在正式开始遍历和操作之前,我们先来简单了解一下 Map 对象。Map 对象是 JavaScript 中的一种内置对象,它允许你存储键值对,其中键和值可以是任意类型。与普通对象不同的是,Map 对象可以使用各种数据类型作为键,而不仅仅是字符串或符号。

创建 Map 对象

创建一个 Map 对象非常简单,只需要使用 new Map() 构造函数即可:

  1. // 创建一个空的 Map 对象
  2. const myMap = new Map();
  3. // 创建一个带有初始值的 Map 对象
  4. const anotherMap = new Map([
  5. ['key1', 'value1'],
  6. ['key2', 'value2']
  7. ]);

二、Map 对象的基本操作

1. 添加元素

使用 set() 方法可以向 Map 对象中添加新的键值对:

  1. const myMap = new Map();
  2. myMap.set('name', 'John');
  3. myMap.set(1, 'One');

2. 获取元素

使用 get() 方法可以根据键获取对应的值:

  1. const name = myMap.get('name'); // 'John'
  2. const one = myMap.get(1); // 'One'

3. 检查元素是否存在

使用 has() 方法可以检查 Map 对象中是否存在指定的键:

  1. const hasName = myMap.has('name'); // true
  2. const hasAge = myMap.has('age'); // false

4. 删除元素

使用 delete() 方法可以删除 Map 对象中指定的键值对:

  1. myMap.delete('name');
  2. const hasNameAfterDelete = myMap.has('name'); // false

5. 清空 Map 对象

使用 clear() 方法可以清空 Map 对象中的所有键值对:

  1. myMap.clear();
  2. const sizeAfterClear = myMap.size; // 0

三、Map 对象的遍历

1. 使用 for...of 循环

for...of 循环是遍历 Map 对象最常用的方法之一,它可以同时获取键和值:

  1. const myMap = new Map([
  2. ['key1', 'value1'],
  3. ['key2', 'value2']
  4. ]);
  5. for (const [key, value] of myMap) {
  6. console.log(key, value);
  7. }

2. 使用 forEach() 方法

forEach() 方法可以对 Map 对象中的每个键值对执行一次提供的函数:

  1. myMap.forEach((value, key) => {
  2. console.log(key, value);
  3. });

3. 分别遍历键和值

使用 keys()values()entries() 方法可以分别获取 Map 对象的键、值和键值对:

  1. // 遍历键
  2. for (const key of myMap.keys()) {
  3. console.log(key);
  4. }
  5. // 遍历值
  6. for (const value of myMap.values()) {
  7. console.log(value);
  8. }
  9. // 遍历键值对
  10. for (const [key, value] of myMap.entries()) {
  11. console.log(key, value);
  12. }

四、Map 对象遍历与操作的实用案例

1. 统计数组中元素的出现次数

  1. const arr = [1, 2, 3, 1, 2, 1];
  2. const countMap = new Map();
  3. for (const num of arr) {
  4. if (countMap.has(num)) {
  5. countMap.set(num, countMap.get(num) + 1);
  6. } else {
  7. countMap.set(num, 1);
  8. }
  9. }
  10. for (const [num, count] of countMap) {
  11. console.log(`${num} 出现了 ${count} 次`);
  12. }

2. 实现缓存功能

  1. const cache = new Map();
  2. function getData(key) {
  3. if (cache.has(key)) {
  4. console.log('从缓存中获取数据');
  5. return cache.get(key);
  6. }
  7. // 模拟从服务器获取数据
  8. const data = `Data for ${key}`;
  9. cache.set(key, data);
  10. console.log('从服务器获取数据');
  11. return data;
  12. }
  13. getData('key1'); // 从服务器获取数据
  14. getData('key1'); // 从缓存中获取数据

五、总结

操作 方法 描述
添加元素 set(key, value) 向 Map 对象中添加新的键值对
获取元素 get(key) 根据键获取对应的值
检查元素是否存在 has(key) 检查 Map 对象中是否存在指定的键
删除元素 delete(key) 删除 Map 对象中指定的键值对
清空 Map 对象 clear() 清空 Map 对象中的所有键值对
遍历键 keys() 返回一个包含 Map 对象所有键的迭代器
遍历值 values() 返回一个包含 Map 对象所有值的迭代器
遍历键值对 entries() 返回一个包含 Map 对象所有键值对的迭代器
遍历并执行函数 forEach(callbackFn) 对 Map 对象中的每个键值对执行一次提供的函数

通过以上的介绍,我们可以看到 Map 对象在存储和管理键值对数据方面非常强大,它的遍历和操作方法也十分灵活多样。希望大家在实际开发中能够充分利用 Map 对象的这些特性,提高代码的效率和可读性。