Set()Map()使用场景和具体如何使用案例解释-demo

news2024/10/8 18:30:38

Set()和Map()都是JavaScript中常见的数据类型,它们分别表示集合和映射。下面分别介绍一下它们的使用场景和具体如何使用的案例。

Set()

Set()用于表示一组互不相同的值,集合中的每个值都是唯一的,不会出现重复的值。Set()中可以存储任意类型的值,包括基本类型和对象。

使用场景:

  • 去重操作:通过Set()可以方便地实现数组去重,避免使用for循环和if语句进行重复值的判断。
  • 数据筛选:将数据保存在Set()中,方便进行查找和筛选操作。

具体使用案例:

// 去重操作
const arr = [1, 2, 2, 3, 3, 4];
const set = new Set(arr);
console.log(set); // Set { 1, 2, 3, 4 }

// 数据筛选
const data = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' },
  { id: 3, name: 'Charlie' },
];
const set = new Set(data.map(item => item.id));
console.log(set.has(2)); // true

Map()

Map()用于表示一组键值对,其中键和值都可以是任意类型的值,包括基本类型和对象。Map()中的键都是唯一的,不会出现重复的键。

使用场景:

  • 缓存数据:通过Map()可以保存一些已经计算好的数据,下次使用时可以直接从Map()中取出。
  • 映射关系:通过Map()可以存储两个数据之间的映射关系,方便进行数据的查找和处理。

具体使用案例:

// 缓存数据
function compute(x) {
  console.log(`正在计算 ${x}...`);
  return x * 2;
}

const cache = new Map();
function memoize(func) {
  return function(x) {
    if (cache.has(x)) {
      console.log(`从缓存中取出 ${x}`);
      return cache.get(x);
    }
    const result = func(x);
    cache.set(x, result);
    console.log(`保存 ${x} 的计算结果 ${result}`);
    return result;
  }
}

const memoized = memoize(compute);
console.log(memoized(1)); // 正在计算 1... 保存 1 的计算结果 2  2
console.log(memoized(1)); // 从缓存中取出 1  2

// 映射关系
const data = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' },
  { id: 3, name: 'Charlie' },
];
const map = new Map(data.map(item => [item.id, item.name]));
console.log(map.get(2)); // Bob

Set 和 Map 是 JavaScript 中的两种常用数据结构,它们各自有不同的使用场景和应用案例。

Set

Set 是一种无序且不重复的集合,它的主要特点是不允许存储重复的值。这使得 Set 在需要存储一组唯一值的场景中非常有用。

使用场景:

  • 去重:可以使用 Set 来快速去除数组中的重复元素。
  • 判断元素是否存在:可以使用 Set 来判断一个元素是否存在于集合中。
  • 迭代和遍历:Set 提供了迭代器(Iterator)接口,可以使用 for...of 循环或 forEach 方法对集合中的元素进行迭代和遍历。
const set = new Set([1, 2, 2, 3, 4, 4]);

console.log(set); // Set { 1, 2, 3, 4 }

console.log(set.has(2)); // true

set.add(5);
set.delete(3);

for (const item of set) {
  console.log(item);
}
// 输出:
// 1
// 2
// 4
// 5

在上述示例中,我们创建了一个 Set 对象,并向其添加了一些元素。由于 Set 中不允许存储重复的值,所以重复的元素被自动去除。我们可以使用 has 方法来判断某个元素是否存在于集合中,使用 add 方法向集合中添加元素,使用 delete 方法删除集合中的元素。最后,我们使用 for...of 循环对集合中的元素进行迭代和遍历。

Map

Map 是一种键值对的集合,它的主要特点是可以根据键来存储和访问对应的值。每个键在 Map 中是唯一的,这使得 Map 在需要根据键查找值的场景中非常有用。

使用场景:

  • 缓存:可以使用 Map 来实现一个简单的缓存,其中键是输入,值是对应的计算结果。
  • 数据存储和检索:可以使用 Map 来存储和检索复杂的数据结构,例如对象、数组等。
  • 顺序和迭代:Map 保持插入顺序,可以使用 for...of 循环或 forEach 方法对键值对进行迭代和遍历。
const map = new Map();

map.set('name', 'Alice');
map.set('age', 25);

console.log(map.get('name')); // 'Alice'
console.log(map.has('age')); // true

map.delete('age');

map.forEach((value, key) => {
  console.log(`${key}: ${value}`);
});
// 输出:
// name: Alice

在上述示例中,我们创建了一个 Map 对象,并使用 set 方法向其中添加了一些键值对。可以使用 get 方法根据键获取对应的值,使用 `has

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

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

相关文章

刚转Mac的新手如何卸载不需要的应用程序

最开始转Mac系统的时候很是苦恼,到底该怎么卸载App啊,App直接拖到废纸篓真的能卸载干净吗,卸载App时会不会留下一些文件残留,慢慢的会不会占满内存,于是我找到了一个免费的卸载工具——XApp。 这是一款Mac应用程序卸载…

《贪吃蛇小游戏 1.0》源码

好久不见&#xff01; 终于搞好了简易版贪吃蛇小游戏&#xff08;C语言版&#xff09;&#xff0c;邀请你来玩一下~ 目录 Snake.h Snake.c test.c Snake.h #include<stdio.h> #include<windows.h> #include<stdbool.h> #include<stdlib.h> #inclu…

某国有资本运营中心人才选拔项目纪实

某国有资本运营中心人才选拔项目纪实 【客户行业】 政府与事业单位 【问题类型】 人才招聘选拔 【客户背景】 在三年国企改革过程中&#xff0c;南方某省政府为响应国家政策&#xff0c;提出组建专业化国有资本投资运营公司&#xff0c;大力开展专业化资本运营&#xff0c;…

016 规格参数

文章目录 新增AttrController.javaAttrVo.javaAttrServiceImpl.javaAttrAttrgroupRelationEntity.javaAttrEntity.javaAttrGroupEntity.java 查询AttrController.javaAttrServiceImpl.javaAttrRespVo.java 修改回显AttrController.javaAttrServiceImpl.java 修改提交AttrContro…

京东云主机和云服务器有啥区别?轻量云主机就是轻量应用服务器吗?

京东云主机和云服务器有啥区别&#xff1f;轻量云主机就是轻量应用服务器吗&#xff1f;云主机就是云服务器的意思&#xff0c;是京东云给自家云服务器取的名字&#xff0c;阿里云叫云服务器ECS&#xff0c;腾讯云叫云服务器CVM&#xff0c;京东云服务器叫云主机&#xff0c;京…

C++ osgEarth 多窗口 同步绘制geometry

开发环境&#xff1a; win10 64bit、Qt5.15.2、C 、MSVC2019 、osg3.5.6、 osgEarth3.1 接触osgEarth不久&#xff0c;贴出来&#xff0c;希望大家指正。 注意osgEarth版本。 采用观察者设计模式&#xff0c;设置 master 和 slave 窗口&#xff0c;通过管理类和信号槽维护窗…

_c++11

嗨喽大家好呀&#xff0c;今天阿鑫给大家带来的是c进阶——c11的内容&#xff0c;好久不见啦&#xff0c;下面让我们进入本节博客的内容吧&#xff01; _c11 统一的列表初始化右值引用可变模板参数(了解&#xff0c;不常接触)lambda表达式function和bind包装器 1. 统一的列表…

JavaWeb 15.详解Servlet及其源码

所有受过的委屈&#xff0c;都在提醒你 要好好争气。 —— 24.10.7 一、Servlet简介 1.动态资源和静态资源 静态资源 无需在程序运行时通过代码运行生成的资源&#xff0c;在程序运行之前就写好的资源&#xff0c;例如&#xff1a;html、css、js、img、音频文件和视频文件 …

职场秘籍:面试加薪,竟然拥有不同的技巧!

假如你是一位测试主管&#xff0c;去评价一名测试工程师是否优秀&#xff0c;那么你将如何去判断呢&#xff1f;你最看重的是哪方面的能力呢&#xff1f; 对于这个问题&#xff0c;是不能一概而论的&#xff0c;要分为两种情况&#xff0c;情况不同&#xff0c;答案一定是不同…

高校新生报道管理系统使用SpringBootSSM框架开发

&#xff01;&#xff01;&#xff01;页面底部,文章结尾,加我好友,获取计算机毕设开发资料 目录 一、引言 二、相关技术介绍 三、系统需求分析 四、系统设计 五、关键技术实现 六、测试与优化 七、总结与展望 一、引言 当前高校新生报到过程中存在许多问题&#xff0c;…

从0到1:用Python构建你人生中的第一个人工智能AI模型

文章目录 摘要引言数据预处理&#xff1a;为模型打下坚实基础数据预处理的步骤Python示例代码说明&#xff1a;注意事项&#xff1a; 模型建立&#xff1a;选择合适的模型神经网络示例代码说明&#xff1a; 模型训练与测试训练示例代码说明&#xff1a; 解读模型结果性能指标 深…

原生小程序开发|小程序卡片(Widget) 开发指南

开发 Widget 代表应用的一个小程序卡片&#xff0c;负责小程序卡片的展示和交互。 小程序卡片(Widget) 的开发在智能小程序的基础上增加一个目录即可&#xff0c;用于存放小程序卡片(Widget)的代码。并在 project.tuya.json 中增加一个声明。 创建小程序卡片(Widget)项目 在 …

九、Drf序列化器

九、序列化器 9.1序列化 从数据库取QuerySet或数据对象转换成JSON 9.1.1序列化器的简易使用 #新建一张部门表 class Depart(models.Model):title=models.CharField(verbose_name=部门,max_length=32)order=models.IntegerField(verbose_name=顺序)count=models.IntegerFiel…

vscode中安装python的包

首先需要调出命令行。然后运行代码&#xff0c;找到你所需要的环境。 PS C:\Users\Administrator\AppData\Local\ESRI\conda\envs\arcgispro-env> conda env list # conda environments: #C:\ProgramData\Anaconda3 base * C:\Users\Administrator\.con…

【无人机设计与控制】无人机三维路径规划,对比蚁群算法,ACO_Astar_RRT算法

摘要 本文探讨了三种不同的无人机三维路径规划算法&#xff0c;即蚁群算法&#xff08;ACO&#xff09;、A算法&#xff08;Astar&#xff09;以及快速随机树算法&#xff08;RRT&#xff09;。通过仿真实验对比了各算法在不同环境下的性能&#xff0c;包括路径长度、计算效率…

软考越来越难了,2024年软考究竟还值不值得考?

最近不少同学沟通&#xff0c;聊到软考现在越来越难了&#xff0c;考了两三次都没过&#xff0c;也有不少新同学咨询软考考试的一些福利政策&#xff0c;投入大量的物力&#xff0c;财力&#xff0c;精力&#xff0c;那么到底软考值不值得考呢&#xff1f; 01 / 关于软考 软考…

【FlagScale】异构算力混合训练方案

背景以及必要性 算力需求的高峰&#xff1a;随着人工智能&#xff08;AI&#xff09;和生成内容&#xff08;AIGC&#xff09;的发展&#xff0c;对计算资源的需求急剧增加。尤其是参数规模达到数百亿的大模型训练&#xff0c;需要大量的计算资源。 算力市场供应紧张&#xff…

一键拯救废片!3个在线教程,实现光线重塑、表情迁移、模糊图像修复

每逢国庆「黄金周」&#xff0c;都是旅游业的高光时刻。根据研判&#xff0c;今年国庆假期全社会跨区域人员流动量将达到 19.4 亿人次&#xff0c;平均每天 2.77 亿人次。 与旅游业同步增长的还有摄影行业&#xff0c;旅拍带动的妆造、服饰租赁等相关环节发展火热&#xff0c;…

Linux安装Redis7.40

一、环境检查 1.1 查看是否已经安装了Redis应用 ps -ef |grep redis或者 whereis redis1.2 若已经安装了redis应用或者有遗留的Redis文件&#xff0c;进行移除或者启动即可。 二、下载&安装 2.1 找到对应的安装包资源&#xff0c;使用wget命令下载&#xff0c;这里安装…

小众交友软件有哪些?小众交友APP排行榜前十名推荐

在网络的广袤天地中&#xff0c;小众交友软件如隐藏的宝藏&#xff0c;散发着独特魅力。它们为人们提供别样的社交舞台&#xff0c;让孤独的灵魂有处可栖。今天&#xff0c;就让我们一同探寻那些小众交友软件的奇妙世界。 1. 咕哇找搭子小程序&#xff1a;这是一个实名制的找搭…