【Web 前端】ES6中,Set和Map的区别 ?

简介: 【5月更文挑战第1天】【Web 前端】ES6中,Set和Map的区别 ?

image.png

ES6 中 Set 和 Map 的区别详解

在 ES6 中,SetMap 是两种新的数据结构,它们分别用于存储唯一值的集合和键值对的集合。尽管它们在某些方面具有相似的功能,但它们的设计目的和使用场景有所不同。本文将详细分析 SetMap 的区别,并通过示例代码片段帮助读者理解它们的特性和用法。

1. Set 和 Map 的基本概念

1.1 Set

Set 是一种集合,它存储一组唯一的值,不允许重复。Set 中的值是无序的,没有索引,它提供了一组操作方法用于添加、删除和检查值的存在。

1.2 Map

Map 是一种键值对的集合,它将键映射到值,每个键对应一个值,键是唯一的。Map 中的键可以是任意类型的值,包括对象、函数和基本数据类型。

2. Set 和 Map 的区别

2.1 数据存储方式

  • Set 存储的是一组唯一的值,值之间没有重复;
  • Map 存储的是键值对的集合,每个键对应一个值,键是唯一的。

2.2 使用场景

  • Set 适用于存储一组唯一的值,并且不关心值的顺序;
  • Map 适用于存储键值对的集合,可以根据键快速查找对应的值。

2.3 遍历方式

  • Set 可以使用 forEach 方法进行遍历,也可以通过 for...of 循环遍历;
  • Map 可以使用 forEach 方法或 for...of 循环遍历键值对,也可以通过 keys()values()entries() 方法遍历键、值和键值对。

2.4 其他差异

  • Set 没有提供直接修改值的方法,只能通过删除和重新添加来实现值的更新;
  • Map 提供了直接修改值的方法,可以通过键来修改对应的值。

3. 示例代码片段

3.1 Set 示例

// 创建一个 Set
const set = new Set();

// 添加值
set.add(1);
set.add(2);
set.add(3);
set.add(1); // 重复值不会被添加

// 删除值
set.delete(2);

// 检查值是否存在
console.log(set.has(1)); // 输出:true
console.log(set.has(2)); // 输出:false

// 遍历值
set.forEach(value => console.log(value)); // 输出:1 3

3.2 Map 示例

// 创建一个 Map
const map = new Map();

// 添加键值对
map.set('name', 'Alice');
map.set('age', 30);

// 获取值
console.log(map.get('name')); // 输出:Alice
console.log(map.get('age')); // 输出:30

// 修改值
map.set('age', 31);

// 删除键值对
map.delete('age');

// 遍历键值对
map.forEach((value, key) => console.log(`${
     
     key}: ${
     
     value}`)); // 输出:name: Alice

4. 总结

SetMap 是 ES6 中新增的两种数据结构,它们分别用于存储唯一值的集合和键值对的集合。它们的设计目的和使用场景有所不同,Set 适用于存储一组唯一的值,而 Map 适用于存储键值对的集合。此外,它们在遍历方式和数据修改方式上也有所区别。通过本文的详细分析和示例代码片段,读者可以更好地理解和应用 SetMap,提高代码的效率和质量。

相关文章
|
9月前
|
并行计算 前端开发 JavaScript
Web Worker:让前端飞起来的隐形引擎
在现代 Web 开发中,前端性能优化是一个至关重要的课题,尤其是对于计算密集型的应用,如图像处理、视频处理、大规模数据分析等任务。单线程的 JavaScript 引擎常常成为性能瓶颈,导致应用变得迟缓。Web Worker,作为一种强大的技术,使得前端能够在后台进行并行计算,从而实现高效的任务处理,不影响主线程的运行和用户的交互体验。
750 108
|
7月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
430 2
|
10月前
|
存储 缓存 JavaScript
Set和Map有什么区别?
Set和Map有什么区别?
664 1
|
9月前
|
JavaScript 前端开发 Java
前端框架选择之争:jQuery与Vue在现代Web开发中的真实地位-优雅草卓伊凡
前端框架选择之争:jQuery与Vue在现代Web开发中的真实地位-优雅草卓伊凡
761 72
前端框架选择之争:jQuery与Vue在现代Web开发中的真实地位-优雅草卓伊凡
|
7月前
|
存储 算法 容器
set_map的实现+set/map加持秒杀高频算法题锻炼算法思维
`set`基于红黑树实现,支持有序存储、自动去重,增删查效率为O(logN)。通过仿函数可自定义排序规则,配合空间配置器灵活管理内存。不支持修改元素值,迭代器失效需注意。`multiset`允许重复元素。常用于去重、排序及查找场景。
|
11月前
|
存储 JavaScript 前端开发
for...of循环在遍历Set和Map时的注意事项有哪些?
for...of循环在遍历Set和Map时的注意事项有哪些?
714 156
|
11月前
|
移动开发 前端开发 JavaScript
前端web创建命令
本项目使用 Vite 搭建 Vue + TypeScript 开发环境,并基于 HTML5 Boilerplate 提供基础模板,快速启动现代前端开发。
204 2
|
11月前
|
Web App开发 编解码 移动开发
零基础音视频入门:你所不知道的Web前端音视频知识
本文回顾了Web端音视频的发展历程,同时还介绍了视频的编码、帧率、比特率等概念,提到了Canvas作为视频播放的替代方案,以及FFmpeg在音视频处理中的重要作用等知识。
316 1
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
1514 14