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

相关文章
|
11月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
579 2
|
存储 缓存 JavaScript
Set和Map有什么区别?
Set和Map有什么区别?
823 1
|
存储 JavaScript 前端开发
Set中的add()方法和数组的push()方法有什么区别?
Set中的add()方法和数组的push()方法有什么区别?
675 122
|
存储 JavaScript 前端开发
for...of循环在遍历Set和Map时的注意事项有哪些?
for...of循环在遍历Set和Map时的注意事项有哪些?
888 156
|
11月前
|
存储 算法 容器
set_map的实现+set/map加持秒杀高频算法题锻炼算法思维
`set`基于红黑树实现,支持有序存储、自动去重,增删查效率为O(logN)。通过仿函数可自定义排序规则,配合空间配置器灵活管理内存。不支持修改元素值,迭代器失效需注意。`multiset`允许重复元素。常用于去重、排序及查找场景。
|
安全 Java 数据库连接
让我们讲解一下 Map 集合遍历的方式
我是小假 期待与你的下一次相遇 ~
472 43
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    1386
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    664
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    518
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    528
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    618
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    805
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1596
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    373
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    1310
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    638