前端笔记:vue中 Map、Set之间的采用和区别

news/2025/9/26 16:45:21/文章来源:https://www.cnblogs.com/tlnshuju/p/19110459

前端笔记:vue中 Map、Set之间的采用和区别

2025-09-25 08:01  tlnshuju  阅读(0)  评论(0)    收藏  举报

一、基础理论:数据结构的本质差异

1.1 Map:键值对

定义特性:Map是ES6引入的键值对集合,支持任意类型作为键(包括对象、函数等),保持插入顺序,提供O(1)时间复杂度的get/set/delete操作。

核心模型

  • Key-Value模型:存储<K,V>结构,键唯一且不可直接修改
  • 迭代特性:通过entries()返回键值对迭代器,支持forEach遍历

数学表达:Map可视为二元关系R={(k,v)|k∈K,v∈V},满足函数定义f:K→V

1.2 Set:唯一值集合

定义特性:Set是唯一值集合,值自动去重,保持插入顺序,提供O(1)时间复杂度的add/has/delete操作。

核心模型

  • 纯Key模型:存储唯一值,可视为{v|v∈V}集合
  • 等价关系:基于Object.is的等价判断,NaN视为相同值

拓扑特性:Set空间满足离散拓扑,任意两点不可连通

二、内部实现:哈希表与红黑树的博弈

2.1 哈希表完成(HashMap/HashSet)

底层结构:数组+链表/红黑树,通过哈希函数映射存储位置

冲突解决

  • 链地址法:哈希冲突时在链表尾部追加节点
  • 红黑树化:链表长度超过8时转换为红黑树

扩容机制:默认初始容量16,负载因子0.75,扩容时容量翻倍

2.2 红黑树实现(TreeMap/TreeSet)

数据结构:自平衡二叉查找树,满足红黑树五条性质

操作复杂度:插入、删除、查找时间复杂度O(log n)

排序特性:按键/值的自然顺序或自定义Comparator排序

三、与数组/对象的对比分析

数据结构

键类型

顺序性

迭代方式

典型用例

Map

任意类型

插入顺序

键值对迭代

动态属性管理

Set

值类型

插入顺序

值迭代

数据去重

数组

数字索引

索引顺序

索引迭代

顺序存储

对象

字符串/Symbol

无序

键迭代

静态属性存储

性能对比

  • 查找操作:Map/Set O(1) vs 数组O(n) vs 对象O(1)
  • 内存占用:Map > Set > 数组 > 对象

四、Vue实战:响应式数据管理

4.1 响应式Map实现

暂时无法在飞书文档外展示此内容

典型场景

  • 用户会话管理(对象作为键)
  • API响应缓存(避免重复请求)
  • 处理日志记录(保持插入顺序)
4.2 响应式Set实现

暂时无法在飞书文档外展示此内容

典型场景

  • 购物车商品去重
  • 权限控制快速检查
  • 表单多选值管理

五、高级特性:WeakMap与内存管理

5.1 WeakMap特性

键弱引用:仅允许对象作为键,不影响垃圾回收

典型用例

  • 私有属性存储
  • DOM节点关联数据
  • 缓存临时计算结果
5.2 内存管理策略

内存释放:

删除元素不立即释放内存,需容器销毁或shrink_to_fit()

频繁操作时注意内存碎片问题

性能优化:

批量操作使用for...of循环

避免深度嵌套Map/Set

预分配初始容量

六、常见误区与解决方案

6.1 误区:直接修改Map/Set元素

错误示范

暂时无法在飞书文档外展示此内容

正确方案

暂时无法在飞书文档外展示此内容

6.2 误区:Set中存储对象引用

问题表现

暂时无法在飞书文档外展示此内容

解决方案

  • 使用JSON.stringify转换后存储
  • 改用Map存储对象标识符

七、性能对比:大数据量下的实证分析

测试环境:Chrome浏览器,100万条数据

操作

Set耗时

Map耗时

差异分析

插入

20-30ms

30-40ms

Map多键值对处理

查找

15-25ms

25-35ms

Map需额外哈希计算

内存占用

80MB

160MB

Map存储键值对

结论

  • 唯一值存储选Set
  • 键值对存储选Map
  • 大数据量注意内存管理

结语

Map和Set是Vue开发者处理艰难数据的两把利器。理解它们的数学本质、内部实现和性能特性,结合Vue的响应式系统,能显著提升开发效率和代码质量。

记住:当应该键值对时选Map,当应该唯一值集合时选Set,这个原则能解决90%的选择难题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/916709.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

性能暴涨50%:PD分离KV cache传输的实战干货

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087 最近我们团队[1]在vLLM上开发了一种KV cache传输的connector,实现…

加强对网站建设php做的网站如何运行

在C语言编程中&#xff0c;使用scanf函数输入字符串是一项基本操作。然而&#xff0c;当我们尝试在for循环中使用scanf输入字符串时&#xff0c;可能会遇到意外的问题&#xff0c;导致循环无法正常执行。本文将深入探讨这个问题&#xff0c;并提供解决方案&#xff0c;让你能够…

做网站店铺图片用什么软件株洲网站建设的企业

目录 1.什么是链表&#xff1f; 2.链表的分类 &#xff08;1&#xff09;无头单向非循环链表&#xff1a; &#xff08;2&#xff09;带头双向循环链表&#xff1a; 3.单链表的实现 &#xff08;1&#xff09;单链表的定义 &#xff08;2&#xff09;动态创建节点 &#…

【GitHub每日速递 250925】 一套代码跑遍全平台!Flutter 让你的应用开发提速 10 倍

原文:https://mp.weixin.qq.com/s/diCHi4TGuroj4IuJL1j2zA Mac用户福音!Ice菜单管理神器,功能超多超强大! Ice 是一个功能强大的菜单栏管理工具的 macOS 应用。简单讲,它能帮你自动整理和隐藏菜单栏图标,让顶部状…

网站建设报价模板四川住房和建设厅网站

技术背景 我们在做执法记录仪或指挥系统的时候&#xff0c;会遇到这样的情况&#xff0c;大多场景下&#xff0c;我们是不需要把设备端的数据&#xff0c;实时传给国标平台端的&#xff0c;默认只需要本地录像留底&#xff0c;如果指挥中心需要查看前端设备实时数据的时候&…

会展免费网站模板公司域名不变网站做变动

本文收录于《AI绘画从入门到精通》专栏,订阅后可阅读专栏内所有文章,专栏总目录:点这里。 大家好,我是水滴~~ 本文主要介绍在 Stable Diffusion WebUI 中使用 ControlNet 的 depth_zoe 预处理器时,出现的 RuntimeError: Error(s) in loading state_dict for ZoeDepth 异常…

未来做啥网站能致富推广计划ppt

Re介绍一下CentOS下MySQL数据库的安装与配置方法MySQL数据库配置的具体步骤&#xff1a;1、编辑MySQL的配置文件&#xff0c;使用vi /etc/my.cnf[rootsample ~]# vi /etc/my.cnf  ← 编辑MySQL的配置文件[mysqld]datadir/var/lib/mysqlsocket/var/lib/mysql/mysql.sock# Defau…

本网站服务器多个wordpress 合并

企智汇项目管理软系统是一款支持私有化部署的项目管理系统&#xff0c;适合大型、中型、小型企业的不同需求。企智汇软件是一个专业的项目全周期管理平台&#xff0c;拥有10年的项目管理经验&#xff0c;以项目为中心&#xff0c;通过计划控制进度&#xff0c;预算控制成本&…

上海芯片上市公司市值大揭秘!谁是“芯”界顶流?

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087上海芯片上市公司市值大揭秘!谁是“芯”界顶流?上海作为中国集成…

如何设计一个高端网站简洁大方大气wap啥梗

Primary介绍 Primary 是 Spring 框架中的一个注解&#xff0c;用于在多个相同类型的 bean 中指定一个默认的 bean。当 Spring 容器在自动装配时遇到类型冲突&#xff0c;即存在多个相同类型的 bean 时&#xff0c;如果没有使用 Qualifier 或其他方式指定具体的 bean&#xff0…

百度云分享tp响应式网站开发国家标准下载网免费

首先介绍计算机的二进制码 二进制常用的有原码&#xff0c;反码和补码&#xff0c;他们都是由最左边的一个符号位和右边的数值位构成。在计算机中为了更低成本的计算&#xff0c;数据都是用补码来存储和运算的。 原码 最高位表示符号位&#xff08;0代表正数&#xff0c;1代…

建设工程扣分查询网站wordpress 倒计时

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

湖南太平洋建设集团网站猴王水果竞猜网站建设

关键字static的作用是什么&#xff1f; 这个简单的问题很少有人能回答完全。在C语言中&#xff0c;关键字static有三个明显的作用&#xff1a; 1、在函数体&#xff0c;一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2、 在模块内&#xff08;但在函数体外&…

网站成本费用网络营销效果评估的作用

1.工具安装 我们使用 ffmpeg 软件来完成转换工作1.1 安装命令 sudo add-apt-repository ppa:jonathonf/ffmpeg-3sudo apt-get updatesudo apt-get install ffmpeg1.2 转换命令 &#xff08;1&#xff09;直接转换命令&#xff1a; ffmpeg -i out.mp4 out.gif(2) 带参数命令&…

如何查看网站备案信息吗陕西建站公司

家里断网了&#xff0c;女票说要看电影。电影之前早已下好&#xff0c;奈何播放器不给力&#xff0c;播放不了rmvb格式&#xff0c;怎么办&#xff1f; 办法很简单&#xff0c;使用浏览器来播放&#xff01;现在的浏览器都内置了视频的解码器&#xff0c;直接将视频拖进浏览器…

做美图 网站网页设计视频

第一步&#xff1a;以管理员身份进行登陆&#xff1a; sqlplus / as sysdba 第二步&#xff1a;打开可插拔数据库 alter pluggable database pdborcl open; 第二步&#xff1a;切换至可插拔数据库 alter session set containerpdborcl;

贵州交通建设集团网站合肥蜀山网站开发

一、提出问题 对于生活生产中的表格数据&#xff0c;至多也就上百维&#xff0c;而且表格数据的行与行之间没有序列和位置上的关系&#xff0c;所以用传统的机器学习算法就可轻松的解决这些问题。但是到了图片数据&#xff0c;传统机器学习就非常吃力了&#xff0c;一个普通的…

做网站要考虑什么网站建设方案及报

作为一名偏后台程序测试的测试工程师&#xff0c;经常会接触运维相关工作&#xff0c;与服务器打交道。 一般公司会搭建内网环境和外网环境&#xff0c;项目开发、SIT测试主要是在内网环境做&#xff0c;然后等到UTA、预投产阶段在外网环境。 如果公司业务量大&#xff0c;多个…

兰州做家教去哪个网站比较好网站内页产品做跳转

面对着围着哥本哈根的、生满了绿草的城堡&#xff0c;是一幢高大的红房子。它的窗子很多&#xff0c;窗子上种着许多凤仙花和青蒿一类的植物。房子内部是一副穷相&#xff1b;里边住的也全是一些穷苦的老人。这就是“瓦尔都养老院”。  看吧&#xff01;一位老倚着窗槛站着&a…