JavaScript中Set和Map数据结构使用场景详解

 更新时间:2023年06月01日 08:59:29   作者:Tom_Li  
这篇文章主要为大家介绍了JavaScript中Set和Map数据结构使用场景详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Set数据结构

Set 是 ES6 中引入的一种新的数据结构,它是一种集合,可以存储任意类型的数据

Set 每个元素的值在集合中是唯一的。

使用 Set 数据结构可以方便地去除数组或对象中的重复元素。

应用场景

// 1  数组去重
const arr = [1, 2, 3, 2, 1];
const set = new Set(arr);
const newArr = Array.from(set); // newArr = [1, 2, 3]
// 2 对象去重
const arr = [{ id: 1 }, { id: 2 }, { id: 1 }, { id: 3 }];
const set = new Set(arr.map(item => item.id));
const newArr = Array.from(set, id => ({ id })); 
// newArr = [{ id: 1 }, { id: 2 }, { id: 3 }]

 在上面的代码中,我们首先使用 Array.map 将数组中的对象映射为它们的 id 值,

然后使用 new Set 去除重复的 id 值。

最后,我们使用 Array.from 将集合转换为对象数组,

并根据每个 id 值创建一个新的对象,得到不重复对象的数组。

Map 数据结构

解释

Map是一种 js 数据结构,与数组的 map 方法并非一种,要区分开来

Map数据结构来管理数据,能提高代码的可读性

Map 相比较 对象格式 存储速度要更快

// 创建一个Map对象
const formData = new Map();
// 添加表单元素的值到Map中
formData.set('username', 'Tom');
formData.set('password', '123456');
// 获取表单元素的值
const username = formData.get('username');// username = Tom
const password = formData.get('password');// password = 123456

通过使用Map来管理数据,可以使代码更加简洁和易于维护。

同时,Map也提供了一些方便的方法,如set()、get()、has()、delete()等,可以方便地对数据进行操作。

使用场景

1. 管理表单数据

当页面中有多个表单元素需要进行数据交互时,可以使用Map来存储表单数据。例如:

const formData = new Map();
formData.set('username', 'Tom');
formData.set('password', '123456');
// 通过get()方法来获取已存储的数据
const username = formData.get('username');// username = Tom
const password = formData.get('password');// password = 123456

2. 管理页面状态

当页面中存在一些状态需要管理时,可以使用Map来存储状态。例如:

const state = new Map();
state.set('loading', false);
state.set('error', null);
// 通过set()方法来更新已存储的数据
state.set('loading', true);
state.set('error', '请求失败');

3. 管理列表数据

当页面中存在一个列表需要管理时,可以使用Map来存储列表数据。例如:

const list = new Map();
list.set(1, { id: 1, name: 'Tom' });
list.set(2, { id: 2, name: 'Join' });
// 通过get()方法来获取已存储的数据
const item = list.get(1); // item = { id: 1, name: 'Tom' }
const item = list.get(2); // item = { id: 2, name: 'Join' }

4. 管理缓存数据

当我们需要缓存一些数据时,可以使用Map来存储缓存数据。例如:

const cache = new Map();
cache.set('key1', 'value1');
cache.set('key2', 'value2');
// 通过get()方法来获取已存储的数据
const value = cache.get('key1');// value = value1
const value = cache.get('key2');// value = value2

以上就是JavaScript中Set和Map数据结构使用场景详解的详细内容,更多关于JavaScript Set Map数据结构的资料请关注脚本之家其它相关文章!

相关文章

  • 详解Javascript 基于长连接的服务框架问题

    详解Javascript 基于长连接的服务框架问题

    本文针对经常使用长连接进行消息收发的应答场景,采用 Websocket 长连接作为服务监听的对象,模拟了一套类 http 服务框架,通过实例代码介绍了Javascript 基于长连接的服务框架,需要的朋友可以参考下
    2022-07-07
  • JavaScript实现函数执行拦截的多种方法

    JavaScript实现函数执行拦截的多种方法

    函数执行拦截是JavaScript中强大的元编程技术,可以实现日志记录、性能监控、权限控制等功能,本文将深入探讨多种函数拦截方法,从基础到高级,帮助您全面掌握这一技术,需要的朋友可以参考下
    2025-06-06
  • javascript中导出与导入实现模块化管理教程

    javascript中导出与导入实现模块化管理教程

    这篇文章主要给大家介绍了关于javascript中导出与导入实现模块化管理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • bootstrap响应式表格实例详解

    bootstrap响应式表格实例详解

    这篇文章主要为大家详细介绍了bootstrap响应式表格的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • JS实现的模仿QQ头像资料卡显示与隐藏效果

    JS实现的模仿QQ头像资料卡显示与隐藏效果

    这篇文章主要介绍了JS实现的模仿QQ头像资料卡显示与隐藏效果,涉及javascript鼠标事件响应及页面元素属性动态操作相关技巧,需要的朋友可以参考下
    2017-04-04
  • 微信小程序CSS3动画下拉菜单效果

    微信小程序CSS3动画下拉菜单效果

    这篇文章主要为大家详细介绍了微信小程序CSS3动画下拉菜单效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • 可编辑下拉框的2种实现方式

    可编辑下拉框的2种实现方式

    下拉框想必大家都有见过,可编辑的下拉框就不多见了吧,本例为大家介绍个不错的实现方法,需要的朋友可以参考下
    2014-06-06
  • JavaScript错误处理之分析 Uncaught(in promise) error的原因及解决方案

    JavaScript错误处理之分析 Uncaught(in promise) error的

    在开发过程中,JavaScript的错误处理是一个老生常谈的话题,当应用程序发生未捕获的异常时,Uncaught(in promise) error是其中最常见的错误类型,这篇文章将从多个方面详细阐述这种错误类型的原因与解决方案,感兴趣的朋友一起看看吧
    2023-12-12
  • javascript web对话框与弹出窗口

    javascript web对话框与弹出窗口

    web对话框与弹出窗口的js函数
    2009-02-02
  • 思维导图插件jsMind的详细使用指南

    思维导图插件jsMind的详细使用指南

    jsMind是一个显示/编辑思维导图的纯的javascript类库,其基于HTML5的帆布进行设计.jsMind以BSD协议开源,这篇文章主要给大家介绍了关于思维导图插件jsMind的详细使用指南,需要的朋友可以参考下
    2024-07-07

最新评论