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

 更新时间:2025年11月03日 10:26:35   作者:普通网友  
Map存储键值对,Set存储唯一值,Map的键可以是任意类型,Set的值可以是任意类型,这篇文章主要介绍了前端vue中Map、Set之间使用和区别的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

Map 和 Set 的基本概念

Map 是一种键值对的集合,类似于对象,但键可以是任意类型(包括对象)。Set 是一种值的集合,类似于数组,但成员的值都是唯一的,没有重复值。

Map 的使用

Map 的主要方法包括 set(key, value)get(key)has(key)delete(key)clear()。Map 的键可以是任意类型,而对象的键只能是字符串或 Symbol。

const map = new Map();
map.set('name', 'John');
map.set(1, 'number one');
console.log(map.get('name')); // 输出: John
console.log(map.has(1)); // 输出: true
map.delete(1);
console.log(map.size); // 输出: 1

Set 的使用

Set 的主要方法包括 add(value)has(value)delete(value)clear()。Set 常用于数组去重或存储唯一值。

const set = new Set();
set.add(1);
set.add(2);
set.add(2); // 重复值会被忽略
console.log(set.size); // 输出: 2
console.log(set.has(1)); // 输出: true
set.delete(1);
console.log(set.size); // 输出: 1

Map 和 Set 的区别

Map 存储键值对,Set 存储唯一值。Map 的键可以是任意类型,Set 的值可以是任意类型。Map 提供了更多的操作方法,如 getset,而 Set 主要用于存储和检查唯一值。

在 Vue 中的使用

在 Vue 中,Map 和 Set 可以作为响应式数据使用,但需要通过 Vue.setthis.$set 方法确保响应性。直接修改 Map 或 Set 的内容不会触发视图更新。

data() {
  return {
    map: new Map(),
    set: new Set()
  };
},
methods: {
  addToMap() {
    this.$set(this.map, 'key', 'value');
  },
  addToSet() {
    this.set.add('value');
    this.$set(this, 'set', new Set(this.set));
  }
}

性能比较

Map 的查找和删除操作比对象更快,尤其是在频繁增删键值对的场景。Set 的查找和删除操作比数组更快,尤其是在需要检查值是否存在的场景。

实际应用场景

Map 适合存储需要快速查找的键值对数据,如缓存或字典。Set 适合存储需要唯一性的数据,如标签或权限列表。在 Vue 中,结合响应式方法可以高效管理复杂数据。

附:思考点

前面我们说SetMap的插入删除效率为什么很高呢?

这里简单讲一下,更加深入需要大家自己下去好好学习一下数据结构了。

简述原因:

mapset存储的所有元素都是以节点的方式来进行存储的,这种节点结构和链表有点类似。我们都知道链表的特点是插入和删除都非常快,时间复杂度为O(1),两个节点通过指针相连,删除或者增加元素时,我们只是重新更改了指针的指向,不想数组那样,掺入或删除之后需要重新排序。

总结

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

相关文章

  • 详解vue页面状态持久化详解

    详解vue页面状态持久化详解

    这篇文章主要为大家介绍了vue页面状态持久化,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • Vue实现全选多个选择框

    Vue实现全选多个选择框

    使用v-model绑定布尔变量实现全选功能:定义数组存储状态,使用v-for循环渲染选择框,绑定状态;添加全选复选框,绑定布尔变量;使用watch监听全选复选框状态变化,更新数组中每一项的状态
    2025-01-01
  • Vue-input框checkbox强制刷新问题

    Vue-input框checkbox强制刷新问题

    这篇文章主要介绍了Vue-input框checkbox强制刷新问题,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • 详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持

    详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持

    本篇文章主要介绍了详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持,非常具有实用价值,需要的朋友可以参考下
    2017-10-10
  • Vue3+Element Plus的项目搭建过程详解

    Vue3+Element Plus的项目搭建过程详解

    这篇文章主要为大家介绍了Vue3+Element Plus的项目搭建过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 构建Vue3桌面应用程序的方法

    构建Vue3桌面应用程序的方法

    在项目中会用到 Electron , 一种最流行的框架,可使用Javascript构建跨平台的桌面应用程序。在本文中,我们将研究如何通过 Vite 开发 Vue 3 桌面项目,感兴趣的可以了解一下
    2021-05-05
  • vue的滚动条插件实现代码

    vue的滚动条插件实现代码

    这篇文章主要介绍了vue的滚动条插件实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Vue动态面包屑功能的实现方法

    Vue动态面包屑功能的实现方法

    面包屑功能是我们在项目中经常遇到的功能,今天小编使用Element-UI 进行实现在vue项目中实现面包屑功能,具体实现方式大家跟随小编一起学习吧
    2019-07-07
  • Vue Hook 封装通用型表格的详细过程

    Vue Hook 封装通用型表格的详细过程

    这篇文章主要介绍了Vue Hook 封装通用型表格,设计通用型表格组件首先,需要设计一个基础的表格组件,它接受列配置、数据和分页信息等参数,本文给大家介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • vue动态绑定图标的完整步骤

    vue动态绑定图标的完整步骤

    动态绑定是我们日常开发中经常遇到的一个需求,下面这篇文章主要给大家介绍了关于vue动态绑定图标的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-05-05

最新评论