vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > vue中Map、Set使用和区别

前端笔记之vue中Map、Set之间的使用和区别详析

作者:IT技术分享社区

Vue中的Map格式,是一种用于存储和管理键值对数据的集合,与常规的数组不同,Map提供了更灵活和高效的方式来操作数据,这篇文章主要介绍了前端笔记之vue中Map、Set之间的使用和区别的相关资料,需要的朋友可以参考下

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

1.1 Map:键值对

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

核心模型

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

1.2 Set:唯一值集合

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

核心模型

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

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

2.1 哈希表实现(HashMap/HashSet)

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

冲突解决

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

2.2 红黑树实现(TreeMap/TreeSet)

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

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

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

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

数据结构

键类型

顺序性

迭代方式

典型用例

Map

任意类型

插入顺序

键值对迭代

动态属性管理

Set

值类型

插入顺序

值迭代

数据去重

数组

数字索引

索引顺序

索引迭代

顺序存储

对象

字符串/Symbol

无序

键迭代

静态属性存储

性能对比

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

4.1 响应式Map实现

import { reactive } from 'vue';

const state = reactive({
  sessions: new Map([
    [1, { active: true }],
    [2, { active: false }]
  ])
});

// 动态更新触发响应
state.sessions.set(3, { active: true });

典型场景

4.2 响应式Set实现

const selectedItems = reactive(new Set());

// 添加元素自动去重
selectedItems.add('item1');
selectedItems.add('item1'); // 不会重复

// 检查存在性
if (selectedItems.has('item1')) {
  console.log('已选中');
}

典型场景

到此这篇关于前端笔记之vue中Map、Set之间的使用和区别的文章就介绍到这了,更多相关vue中Map、Set使用和区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文