JavaScript 中的 Map 和 Set:你不得不知的 ES6 新特性!

一、Set:值唯一性的保证

Set 对象类似于数组,但它只存储唯一的值。这意味着,即使你多次添加相同的值,Set 中也只会保留一个。这使得 Set 非常适合用于去重、判断元素是否存在等场景。

核心方法:

  • add(value): 向 Set 中添加一个新值。
  • delete(value): 从 Set 中删除一个值。
  • has(value): 判断 Set 中是否包含某个值。
  • clear(): 清空 Set 中的所有值。
  • size: 返回 Set 中元素的数量。

示例:

javascript 复制代码
const mySet = new Set();
mySet.add(1);
mySet.add(2);
mySet.add(2); // 重复添加,只会保留一个 2
mySet.add('hello');

console.log(mySet); // Set(3) { 1, 2, 'hello' }
console.log(mySet.has(2)); // true
console.log(mySet.size); // 3
mySet.delete(2);
console.log(mySet); // Set(2) { 1, 'hello' }

应用场景:

  • 数据去重:快速去除数组中的重复元素。
  • 元素存在性判断:高效地检查元素是否在一个集合中。
  • 唯一标识符生成:生成一组唯一的标识符。

二、Map:键值对的完美伴侣

Map 对象存储键值对,类似于对象,但它允许使用任意数据类型作为键,而不仅仅是字符串。这使得 Map 比对象更加灵活和强大。 Map 中的键值对按照插入顺序排列,方便迭代遍历。

核心方法:

  • set(key, value): 向 Map 中添加一个键值对。
  • get(key): 获取与指定键关联的值。
  • delete(key): 删除指定键的键值对。
  • has(key): 判断 Map 中是否包含指定键。
  • clear(): 清空 Map 中的所有键值对。
  • size: 返回 Map 中键值对的数量。
  • entries(), keys(), values(): 分别返回键值对、键和值的迭代器。

示例:

javascript 复制代码
const myMap = new Map();
myMap.set('name', 'John');
myMap.set(1, 'one');
myMap.set({a:1}, 'object');

console.log(myMap); // Map(3) { 'name' => 'John', 1 => 'one', { a: 1 } => 'object' }
console.log(myMap.get('name')); // John
console.log(myMap.has(1)); // true
console.log(myMap.size); // 3

应用场景:

  • 缓存:存储数据,提高程序性能。
  • 数据关联:建立不同数据之间的映射关系。
  • 对象存储:存储复杂对象,避免对象键名冲突。
相关推荐
REDcker30 分钟前
Cesium三维WebGIS入门详解
前端·gis·web·cesium·webgis
0暗影流光039 分钟前
十倍效能提升——Web 基础研发体系的建立
前端
前端一课42 分钟前
用Agent Skill重构代码:300行缩至30行的实战教程
前端
腻害兔1 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:IM 即时通讯模块,一个被低估的「全功能聊天系统」
java·前端·vue.js·产品经理·ai编程
奎叔1 小时前
Flutter 异常处理体系:从捕获、转换到恢复
前端
心念枕惊1 小时前
.NET CORE 授权进阶-角色、策略与动态权限实现
java·前端·.netcore
小徐_23331 小时前
寓言故事一则:狗猛酒酸
前端·ai编程
xiaobaoyu2 小时前
vue2+element开发中问题和解决方式
前端
KaMeidebaby2 小时前
卡梅德生物技术快报 | 核酸适配体文库测序:核酸适配体文库测序的技术原理、实验流程与数据解析
前端·网络·数据库·人工智能·算法
Hilaku2 小时前
为什么在 2026 年,MPA(多页面应用)正在悄悄复辟?
前端·javascript·程序员