06 ES6中的Map类型

ES6 中的 Map 是一种集合数据结构,与 Set 类似,但它是用来存储键值对的。Map 提供了更灵活的迭代和更广泛的键类型支持,与普通的对象相比,Map 的键可以是任何值,包括对象和函数。

以下是 Map 类型的一些关键特性和常用方法:

特性

  1. 键的多样性Map 的键可以是任何类型,不仅限于字符串或数字。
  2. 顺序性Map 保留了键值对的插入顺序。
  3. 唯一性 :每个键在 Map 中都是唯一的。

创建 Map

  • 使用 new Map() 构造函数创建一个空的 Map
  • 可以在创建时传入一个可迭代对象(其结构通常为 [键, 值] 的数组),来初始化 Map
javascript 复制代码
let myMap = new Map();
let myMapFromIterable = new Map([['key1', 'value1'], ['key2', 'value2']]);

常用方法

  1. set(key, value) :将一个键值对添加到 Map 对象中。

    javascript 复制代码
    myMap.set('key', 'value');
  2. get(key):返回与给定键关联的值。

    javascript 复制代码
    let value = myMap.get('key');
  3. has(key) :检查 Map 对象是否包含特定的键。

    javascript 复制代码
    let hasKey = myMap.has('key');
  4. delete(key) :从 Map 对象中移除指定的键值对。

    javascript 复制代码
    myMap.delete('key');
  5. clear() :移除 Map 对象中的所有键值对。

    javascript 复制代码
    myMap.clear();
  6. size :返回 Map 对象中键值对的数量。

    javascript 复制代码
    let size = myMap.size;
  7. keys() :返回一个新的迭代器对象,该迭代器包含 Map 对象中的键。

  8. values() :返回一个新的迭代器对象,该迭代器包含 Map 对象中的值。

  9. entries() :返回一个新的迭代器对象,该迭代器包含 Map 对象中的键值对数组。

  10. forEach(callbackFn, thisArg) :对 Map 对象中的每个键值对执行给定函数。

javascript 复制代码
myMap.forEach((value, key) => {
  console.log(`${key}: ${value}`);
});

转换为数组

  • 可以使用 Array.from() 方法将 Map 的键、值或键值对数组转换为数组。
javascript 复制代码
let keysArray = Array.from(myMap.keys());
let valuesArray = Array.from(myMap.values());
let entriesArray = Array.from(myMap.entries());

示例

javascript 复制代码
// 创建一个 Map 实例
let myMap = new Map();

// 添加键值对
myMap.set('key1', 'value1');
myMap.set('key2', 'value2');

// 获取与键关联的值
console.log(myMap.get('key1')); // 输出: value1

// 检查键是否存在
console.log(myMap.has('key1')); // 输出: true

// 删除键值对
myMap.delete('key1');

// 获取 Map 的大小
console.log(myMap.size); // 输出: 1

// 清空 Map
myMap.clear();

// 遍历 Map
myMap.set('key3', 'value3');
myMap.forEach((value, key) => {
  console.log(`${key}: ${value}`); // 输出: key3: value3
});

// 转换为数组
let keys = Array.from(myMap.keys());
let values = Array.from(myMap.values());
let entries = Array.from(myMap.entries());

Map 是一种非常有用的数据结构,特别适合于需要快速查找、添加和删除键值对的场景。它提供了一种更灵活的方式来存储和管理键值对集合。

相关推荐
香蕉可乐荷包蛋1 小时前
浅入ES5、ES6(ES2015)、ES2023(ES14)版本对比,及使用建议---ES6就够用(个人觉得)
前端·javascript·es6
未来之窗软件服务2 小时前
资源管理器必要性———仙盟创梦IDE
前端·javascript·ide·仙盟创梦ide
冬瓜的编程笔记3 小时前
【八股战神篇】MySQL高频面试题
数据库·mysql·面试
liuyang___3 小时前
第一次经历项目上线
前端·typescript
西哥写代码3 小时前
基于cornerstone3D的dicom影像浏览器 第十八章 自定义序列自动播放条
前端·javascript·vue
独行soc3 小时前
2025年渗透测试面试题总结-百度面经(题目+回答)
运维·开发语言·经验分享·学习·面试·渗透测试·php
清风细雨_林木木3 小时前
Vue 中生成源码映射文件,配置 map
前端·javascript·vue.js
FungLeo4 小时前
node 后端和浏览器前端,有关 RSA 非对称加密的完整实践, 前后端匹配的代码演示
前端·非对称加密·rsa 加密·node 后端
雪芽蓝域zzs4 小时前
JavaScript splice() 方法
开发语言·javascript·ecmascript
不灭锦鲤4 小时前
xss-labs靶场第11-14关基础详解
前端·xss