JS中Map相关介绍

1、Map概念

Map 是一种集合数据结构,它存储键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值)都可以作为一个键或一个值。

2、创建一个Map

你可以通过 new Map() 构造函数来创建一个空的 Map

const myMap = new Map();

你也可以在创建时直接初始化 Map,通过传递一个可迭代对象,其中每个元素都是一个包含两个元素的数组,第一个元素是键,第二个元素是值。

const myMap = new Map([
  [1, 'one'],
  [2, 'two'],
  [3, 'three']
]);

Map的方法和属性

  • set(key, value):在 Map 中设置键值对。
  • get(key):返回键对应的值,如果不存在则返回 undefined
  • has(key):返回一个布尔值,表示 Map 中是否包含指定的键。
  • delete(key):从 Map 中移除指定的键值对,如果键存在并成功移除,返回 true,否则返回 false
  • clear():移除 Map 中所有的键值对。
  • size:返回 Map 中键值对的数量。

                
JavaScript 中的 `Map` 对象是一种用于存储键值对的数据结构,其灵活性和功能远超传统的对象(Object)。以下是关于 `Map` 的使用方法和示例。 ### 1. 创建 Map 实例 可以通过 `new Map()` 构造函数来创建一个空的 `Map`,也可以传入一个可迭代对象(如数组)作为初始化数据。 ```javascript const myMap = new Map([ ['key1', 'value1'], ['key2', 'value2'] ]); ``` ### 2. 常用操作 #### 添加或更新键值对 - 使用 `set(key, value)` 方法添加或更新键值对。 ```javascript myMap.set('key3', 'value3'); ``` #### 获取值 - 使用 `get(key)` 方法获取指定键对应的值。 ```javascript console.log(myMap.get('key1')); // 输出: value1 ``` #### 删除键值对 - 使用 `delete(key)` 方法删除指定键及其对应的值。 ```javascript myMap.delete('key2'); ``` #### 检查是否存在键 - 使用 `has(key)` 方法检查某个键是否存在于 `Map` 中。 ```javascript console.log(myMap.has('key2')); // 输出: false ``` #### 获取大小 - 使用 `size` 属性获取 `Map` 中键值对的数量。 ```javascript console.log(myMap.size); // 输出: 2 ``` #### 清空所有内容 - 使用 `clear()` 方法移除 `Map` 中的所有键值对。 ```javascript myMap.clear(); ``` ### 3. 遍历 Map `Map` 提供了多种遍历方式,包括 `keys()`、`values()` 和 `entries()` 方法,分别用于获取键、值以及键值对的迭代器。 #### 遍历键值对 ```javascript for (let [key, value] of myMap.entries()) { console.log(`Key: ${key}, Value: ${value}`); } ``` #### 遍历键 ```javascript for (let key of myMap.keys()) { console.log(`Key: ${key}`); } ``` #### 遍历值 ```javascript for (let value of myMap.values()) { console.log(`Value: ${value}`); } ``` ### 4. 示例 以下是一个完整的示例,展示如何使用 `Map` 来存储和操作数据: ```javascript // 创建并初始化 Map const userRoles = new Map([ ['admin', { name: 'Alice', role: 'Administrator' }], ['editor', { name: 'Bob', role: 'Editor' }] ]); // 添加新用户角色 userRoles.set('viewer', { name: 'Charlie', role: 'Viewer' }); // 获取特定用户角色 console.log(userRoles.get('editor')); // 输出: { name: 'Bob', role: 'Editor' } // 删除用户角色 userRoles.delete('admin'); // 遍历 Map for (let [role, user] of userRoles.entries()) { console.log(`Role: ${role}, User: ${user.name}`); } ``` ### 5. Map 与 Object 的区别 - **键类型**:`Map` 允许任何类型的值作为键,而 `Object` 的键只能是字符串或符号。 - **顺序**:`Map` 会按照插入顺序保存键值对,而 `Object` 的键顺序可能不一致。 - **性能**:在频繁增删键值对的场景下,`Map` 的性能通常优于 `Object`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值