【ES6】03-Set + Map

news2025/3/17 6:31:40

本文介绍两种集合 set map 的操作和方法。

目录

1. Set

1.1 set基本使用

1.2 add

1.3 delete

1.4 has

1.5 size

1.6 set转换为数组

1.7 拓展运算符

1.8 for...of

1.9 forEach

1.10 set给数组去重

2. Map

2.1 创建map集合

2.2 set添加元素

2.3 delete删除元素

2.4 has

2.5 size

2.6 map转换为数组

2.7 拓展运算符...

2.8 for...of对map集合遍历

2.9 forEach遍历

2.10 清空map集合


1. Set

1.1 set基本使用

        // 1.set基本使用
        // 创建set集合
        let fruits = new Set(['apple','banana','orange']);
        console.log(fruits);  //Set(3)

1.2 add

        // 2.add添加
        fruits.add('mango');
        console.log(fruits);  //Set(4)

1.3 delete

        // 3.delete
        fruits.delete('banana');  // 指定删除元素
        console.log(fruits);

1.4 has

        // 4.has判断是否有这个元素
        console.log(fruits.has('apple'));  //true
        console.log(fruits.has('banana'));  //false

1.5 size

        // 5.size表示Set集合的大小
        console.log(fruits.size);  //3

1.6 set转换为数组

        // 6.将set集合转化为数组
        let arr = Array.from(fruits);
        console.log(arr);  // 数组类型

1.7 拓展运算符

        // 7.拓展运算符...展开可迭代对象
        let web = 'baidu.com';  // 中文也能逐字展开
        // 将上面的内容变为数组
        let webArr = [...web];
        console.log(webArr);  // 每一个元素都进行了展开 并存入数组
        let webArr1 = [...fruits];  // 将set集合展开 每一个元素存入数组
        console.log(webArr1);   // ['apple', 'orange', 'mango']

1.8 for...of

        // 8.for...of循环遍历 set集合
        for(let item of fruits){
            console.log(item);  // 所有的元素打印
        }

1.9 forEach

        // 9.forEach循环
        // set集合名.forEach(参数) => {函数体}
        fruits.forEach((value) => {
            console.log(value);
        })
        // set使用forEach时无法用index打印索引,index打印出来还是他自己本身

1.10 set给数组去重

        // 10.利用set 给 数组 去重
        let arr1 = [1,1,2,3,3,5,6];  // 有重复数字
        let set1 = new Set(arr1);  // 将数组转换为set集合
        console.log(set1);  // 已经去重

2. Map

2.1 创建map集合

        // 1.创建map集合
        // ([ [],[],[] ])  根据数据类型考虑是否加引号
        let teacher = new Map([
            ['name','zzz'],
            ['gender','男'],
            ['web','baidu.com']
        ])
        console.log(teacher);
        // Map(3) {'name' => 'zzz', 'gender' => '男', 'web' => 'baidu.com'}

2.2 set添加元素

        // 2.set增加元素
        teacher.set('height',185);
        console.log(teacher);
        // Map(4) {'name' => 'zzz', 'gender' => '男', 'web' => 'baidu.com', 'height' => 185}

        // !!注意:在map中每个键都是唯一的,如果添加的键值对和某个已有的键重复了,则会替换原来的值

2.3 delete删除元素

        // 3.delete删除元素
        teacher.delete('gender');  // 只删除键即可
        console.log(teacher);
        // Map(3) {'name' => 'zzz', 'web' => 'baidu.com', 'height' => 185}

2.4 has

        // 4.has检测是否有对应的键值
        // 只检测键即可
        console.log(teacher.has('gender'));  //false
        console.log(teacher.has('web'));  // true

2.5 size

        // 5.size获取map集合大小
        console.log(teacher.size);  // 3个键值对

2.6 map转换为数组

        // 6.将map集合转换为数组
        // 类似set:Array.from(集合名)
        let arr = Array.from(teacher);  
        console.log(arr);

2.7 拓展运算符...

        // 7.拓展运算符...将map集合转换为数组
        let arr1 = [...teacher];
        console.log(arr1);

2.8 for...of对map集合遍历

        // 8.for...of对map集合的遍历
        for(let value of teacher){
            console.log(value);
            // 遍历了三次 每次打印一个键值对
        }

        // 还可以利用解构的方式 从数组或对象中获取值并赋值给变量
        // [key,value] 是一种解构语法,将map数组中的键值对解构为 key和value 两个变量
        for(let [key,value] of teacher){
            console.log(key,value);
        }

2.9 forEach遍历

        // 9.forEach遍历
        // 箭头函数形式
        teacher.forEach((value,key) => {   // 键/索引在后,值在前
            console.log(key,value);  // 打印时 键在前 值在后
        });

2.10 清空map集合

        // 10.清空map集合
        teacher.clear();
        console.log(teacher);
        // 清空set集合也可以用这种方法

本文介绍两种集合 set map 的操作和方法。

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

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

相关文章

开发、科研、日常办公工具汇总(自用,持续更新)

主要记录汇总一下自己平常会用到的网站工具,方便查阅。 update:2025/2/11(开发网站补一下) update:2025/2/21(补充一些AI工具,刚好在做AI视频相关工作) update:2025/3/7&…

HTML5 drag API实现列表拖拽排序

拖拽API(Drag and Drop API)是HTML5提供的一组功能,使得在网页上实现拖放操作变得更加简单和强大。这个API允许开发者为网页元素添加拖拽功能,用户可以通过鼠标将元素拖动并放置到指定的目标区域。 事件类型 dragstart&#xff1…

改变一生的思维模型【11】升维

升维思维模型:突破认知局限的破局法则 一、定义与核心逻辑 升维思维是通过增加分析维度,将问题投射到更高认知层次寻找解决方案的思考方式。其本质是跳出原有竞争维度,在更广阔的空间重构游戏规则。核心逻辑在于:当低维战场陷入…

【动手学深度学习】#2线性神经网络

主要参考学习资料: 《动手学深度学习》阿斯顿张 等 著 【动手学深度学习 PyTorch版】哔哩哔哩跟李牧学AI 目录 2.1 线性回归2.1.1 线性回归的基本元素线性模型损失函数解析解随机梯度下降 2.1.3 最大似然估计 2.2 线性回归从零开始实现2.2.1 生成数据集2.2.2 读取数…

计算机网络——NAT

一、什么是NAT? NAT(Network Address Translation,网络地址转换) 是一种将 私有IP地址 与 公有IP地址 相互映射的技术,主要用于解决IPv4地址不足的问题。它像一名“翻译官”,在数据包经过路由器或防火墙时…

同一子网通信

添加交换机后的通信流程 1. 同一子网内(使用交换机) 判断是否在同一子网: 主机A通过子网掩码判断主机B的IP地址是否属于同一子网。若在同一子网,主机A需要通过ARP获取主机B的MAC地址。 ARP请求(广播)&…

IntelliJ IDEA 快捷键系列:重命名快捷键详解

目录 引言一、默认重命名快捷键1. Windows 系统‌2. Mac 系统‌ 二、操作步骤与技巧1. 精准选择重命名范围‌2. 智能过滤无关内容‌ 三、总结 引言 在代码重构中,‌重命名变量、类、方法‌ 是最常用的操作之一。正确使用快捷键可以极大提升开发效率。本文针对 ‌Ma…

零基础掌握分布式ID生成:从理论到实战的完整指南 [特殊字符]

一、为什么需要分布式ID? 🤔 在单机系统中,使用数据库自增ID就能满足需求。但在分布式系统中,多个服务节点同时生成ID时会出现以下问题: ID冲突:不同节点生成相同ID 扩展困难:数据库自增ID无法…

使用python反射,实现pytest读取yaml并发送请求

pytest yaml yaml - feature: 用户模块story: 登录title: 添加用户request:method: POSTurl: /system/user/listheaders: nullparams: nullvalidate: nullread_yaml_all def read_yaml_all(path):with open(path, r, encodingutf-8) as f:value yaml.safe_load(f)return v…

Matlab 汽车悬架系统动力学建模与仿真

1、内容简介 略 Matlab 170-汽车悬架系统动力学建模与仿真 可以交流、咨询、答疑 2、内容说明 略 本文对题目给定的1/2汽车四自由度模型,建立状态空间模型进行系统分析,并通过MATLAB仿真对系统进行稳定性、可控可观测性分析,对得的结果进行…

专访数势科技谭李:智能分析 Agent 打通数据平权的最后一公里

作者|斗斗 编辑|皮爷 出品|产业家 伦敦塔桥下的泰晤士河底,埋藏着工业革命的隐秘图腾——布鲁内尔设计的隧道盾构机。在19世纪城市地下轨道建设的过程中,这个直径11米的钢铁巨兽没有选择拓宽河道,而是开创了地下通行的新维度。 “我们不…

2、操作系统之软件基础

一、硬件支持系统 ,系统管理硬件 操作系统核心功能可以分为: 守护者:对硬件和软件资源的管理协调者:通过机制,将各种各样的硬件资源适配给软件使用。 所以为了更好的管理硬件,操作系统引进了软件。其中3大…

STC89C52单片机学习——第20节: [8-2]串口向电脑发送数据电脑通过串口控制LED

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.03.15 51单片机学习——第20节: [8-2]串口向电脑发送数据&电脑通过串口控制LED 前言…

K8S下nodelocaldns crash问题导致域名请求响应缓慢

前言 最近做项目,有业务出现偶发的部署导致响应很慢的情况,据了解,业务使用域名访问,相同的nginx代理,唯一的区别就是K8S重新部署了。那么问题大概率出现在容器平台,毕竟业务是重启几次正常,偶…

CVPR2024 | TT3D | 物理世界中可迁移目标性 3D 对抗攻击

Towards Transferable Targeted 3D Adversarial Attack in the Physical World 速览总结摘要-Abstract引言-Introduction相关工作-Related Work方法-MethodologyPreliminray-预备知识问题表述-Problem FormulationNeRF参数空间中的双重优化-Dual Optimization in NeRF Paramete…

全面对比分析:HDMI、DP、DVI、VGA、Type-C、SDI视频接口特点详解

在当今的多媒体时代,视频接口的选择对于设备连接和显示效果至关重要。不同的视频接口在传输质量、兼容性、带宽等方面各有优劣。本文将全面对比分析常用的视频接口HDMI、DP、DVI、VGA、Type-C、SDI,帮助读者更好地理解它们的特点和适用场景。 一、HDMI&…

传输层自学

传输实体:完成传输层任务的硬件或软件 可能位于: 操作系统内核独立的用户进程绑定在网络应用中的链接库网络接口卡 1.功能: 网络层与传输层作用范围比较? 网络层负责把数据从源机送达到目的机 传输层负责把数据送达到具体的应…

微服务架构下前端如何配置 OpenAPI 接口

在微服务架构中,后端通常由多个独立的服务组成,每个服务可能提供自己的 API 接口。为了在前端项目中高效地调用这些 API,可以使用 OpenAPI 规范生成客户端代码。以下是详细的配置步骤和最佳实践: 1. 理解 OpenAPI 规范 OpenAPI 是…

FreeRTOS源码概述

FreeRTOS源码概述 1 FreeRTOS目录结构 使用 STM32CubeMX 创建的 FreeRTOS 工程中,FreeRTOS 相关的源码如下: 主要涉及2个目录: Core Inc 目录下的 FreeRTOSConfig.h 是配置文件Src 目录下的 freertos.c 是 STM32CubeMX 创建的默认任务 Mi…

日志统计(C++,模拟,双指针)

题目要我们求在某个时间段中,帖子点赞数达到K的帖子数 遍历方式一 我们可以先对所有帖子根据时间,升序排序 枚举每一条帖子,枚举后续每一条帖子,如果id相同且时间差小于d,那么就记录起来,如果记录数量cn…