【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,提高代码的效率和质量。

相关文章
|
10月前
|
存储 缓存 JavaScript
Set和Map有什么区别?
Set和Map有什么区别?
683 1
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
1034 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
监控 前端开发 JavaScript
前端工程化和传统前端开发的区别是什么?
前端工程化相比传统前端开发,在开发模式、代码组织与管理、构建与部署流程、团队协作、性能优化以及技术选型等方面都有了显著的改进和提升,能够更好地应对现代前端应用开发的复杂性和高要求。
|
11月前
|
存储 编译器 容器
set、map、multiset、multimap的介绍及使用以及区别,注意事项
set是按照一定次序存储元素的容器,使用set的迭代器遍历set中的元素,可以得到有序序列。set当中存储元素的value都是唯一的,不可以重复,因此可以使用set进行去重。set默认是升序的,但是其内部默认不是按照大于比较,而是按照小于比较。set中的元素不能被修改,因为set在底层是用二叉搜索树来实现的,若是对二叉搜索树当中某个结点的值进行了修改,那么这棵树将不再是二叉搜索树。
411 0
|
JavaScript 前端开发 开发者
flat、flatmap与map的用法区别
本文介绍了 JavaScript 数组方法 `flat()`、`flatMap()` 和 `map()` 的用法及区别。`flat()` 可按指定深度递归展平数组,参数为深度,默认一层;`flatMap()` 结合了 `map()` 和 `flat()` 功能,返回一维数组,长度可能不同于原数组;而 `map()` 返回与原数组长度一致的新数组。通过多个代码示例展示了三者的功能和差异,帮助开发者更好地理解和使用这些方法。
1552 0
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
|
存储 JavaScript 前端开发
Set、Map、WeakSet 和 WeakMap 的区别
在 JavaScript 中,Set 和 Map 用于存储唯一值和键值对,支持多种操作方法,如添加、删除和检查元素。WeakSet 和 WeakMap 则存储弱引用的对象,有助于防止内存泄漏,适合特定场景使用。
|
JavaScript 前端开发 Java
VUE学习四:前端模块化,ES6和ES5如何实现模块化
这篇文章介绍了前端模块化的概念,以及如何在ES6和ES5中实现模块化,包括ES6模块化的基本用法、默认导出与混合导出、重命名export和import,以及ES6之前如何通过函数闭包和CommonJS规范实现模块化。
625 0
VUE学习四:前端模块化,ES6和ES5如何实现模块化
|
存储 缓存 Java
【用Java学习数据结构系列】HashMap与TreeMap的区别,以及Map与Set的关系
【用Java学习数据结构系列】HashMap与TreeMap的区别,以及Map与Set的关系
271 1