当前位置: 首页 > news >正文

JS中Set和Map用法详解

目录

1、Set

1.基本用法

2.Set 实例的属性和方法

3.遍历操作

2、Map


1、Set
1.基本用法

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

Set本身是一个构造函数,用来生成 Set 数据结构。

 const s = new Set();[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));for (let i of s) {  console.log(i);}// 2 3 5 4​// 去除数组的重复成员[...new Set(array)]​//去除字符串里面的重复字符。[...new Set('ababbc')].join('')// "abc"

上面代码通过add()方法向 Set 结构加入成员,结果表明 Set 结构不会添加重复的值。

2.Set 实例的属性和方法

Set 结构的实例有以下属性。

  • Set.prototype.constructor:构造函数,默认就是Set函数。

  • Set.prototype.size:返回Set实例的成员总数。

Set 实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。下面先介绍四个操作方法。

  • Set.prototype.add(value):添加某个值,返回 Set 结构本身。

  • Set.prototype.delete(value):删除某个值,返回一个布尔值,表示删除是否成功。

  • Set.prototype.has(value):返回一个布尔值,表示该值是否为Set的成员。

  • Set.prototype.clear():清除所有成员,没有返回值

上面这些属性和方法的实例如下。

s.add(1).add(2).add(2);// 注意2被加入了两次s.size // 2s.has(1) // trues.has(2) // trues.has(3) // falses.delete(2);s.has(2) // false
Array.from方法可以将 Set 结构转为数组。
const items = new Set([1, 2, 3, 4, 5]);const array = Array.from(items);
3.遍历操作

Set 结构的实例有四个遍历方法,可以用于遍历成员。

  • Set.prototype.keys():返回键名的遍历器

  • Set.prototype.values():返回键值的遍历器

  • Set.prototype.entries():返回键值对的遍历器

  • Set.prototype.forEach():使用回调函数遍历每个成员

需要特别指出的是,Set的遍历顺序就是插入顺序。这个特性有时非常有用,比如使用 Set 保存一个回调函数列表,调用时就能保证按照添加顺序调用。

2、Map

它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。

 const m = new Map();const o = {p: 'Hello World'};m.set(o, 'content')m.get(o) // "content"m.has(o) // truem.delete(o) // truem.has(o) // false

上面代码使用 Map 结构的set方法,将对象o当作m的一个键,然后又使用get方法读取这个键,接着使用delete方法删除了这个键。

相关文章:

JS中Set和Map用法详解

目录 1、Set 1.基本用法 2.Set 实例的属性和方法 3.遍历操作 2、Map 1、Set 1.基本用法 ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set本身是一个构造函数,用来生成 Set 数据结构。 const s …...

使用nginx对视频、音频、图片等静态资源网址,加token签权

目前很多静态资源,都可以无权限验证,进行访问或转发,对有价值的资源进行签权,限制转发无法在代码中实现拦截,我们可以使用nginx对视频、音频、图片等静态资源网址,加token签权 如: http://192…...

[每周一更]-(第86期):NLP-实战操作-文本分类

NLP文本分类的应用场景 医疗领域 - 病历自动摘要: 应用: 利用NLP技术从医疗文档中自动生成病历摘要,以帮助医生更快速地了解患者的状况。 法律领域 - 法律文件分类: 应用: 使用文本分类技术自动分类法律文件&#xf…...

【Springcloud篇】学习笔记五(十章):Gateway网关

第十章_Gateway新一代网关 1.Gateway简介 1.1官网 上一代zuul 1.X:https://github.com/Netflix/zuul/wiki 当前gateway:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/ 1.2是什么 SpringCloud …...

Linux开发工具

前言:哈喽小伙伴们,经过前边的学习我们已经掌握了Linux的基本指令和权限,相信大家学完这些之后都会对Linux有一个更加深入的认识,但是Linux的学习可以说是从现在才刚刚开始。 这篇文章,我们将讲解若干个Linux的开发工…...

C++ 动态规划 线性DP 最长共同子序列

给定两个长度分别为 N 和 M 的字符串 A 和 B ,求既是 A 的子序列又是 B 的子序列的字符串长度最长是多少。 输入格式 第一行包含两个整数 N 和 M 。 第二行包含一个长度为 N 的字符串,表示字符串 A 。 第三行包含一个长度为 M 的字符串,表…...

【备战蓝桥杯】——循环结构终篇

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-yl4Tqejg4LkjZLAM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…...

为什么说Python语法简单?

Python被广泛认为是一种语法简单、易学易用的编程语言,这种观点有几个关键的原因: 1、清晰简洁的语法结构: Python采用了清晰而简洁的语法结构,使得代码易于阅读和理解。Python的语法设计强调代码的可读性,采用了清晰…...

【HarmonyOS应用开发】ArkUI 开发框架-进阶篇-管理组件状态(九)

管理组件状态 一、概述 在应用中,界面通常都是动态的。下图所示,在子目标列表中,当用户点击目标一,目标一会呈现展开状态,再次点击目标一,目标一呈现收起状态。界面会根据不同的状态展示不一样的效果。 Ar…...

EF Core入门例子(以SqLite为数据库)

测试环境: visual studio 2017 .net core 2.1 具体步骤如下: 1 新增名称为EFCoreDemo的.net core控制台程序,版本选择.net core 2.1,项目不能放到带中文的目录下,不然到后面执行Add-Migration命令时会报如下的错误…...

centos7 安装nginx

在 CentOS 7 上安装 Nginx,你可以选择从官方仓库(EPEL)安装,或者手动编译安装。以下是通过 EPEL 安装 Nginx 的步骤: 方法一:通过 EPEL 仓库安装 添加 EPEL 仓库: sudo yum install epel-relea…...

【Linux Day14 UDP网络通讯】

UDP网络通讯 UDP报文结构: 16位源端口:用于记录发送端的端口号(占用两个字节)16位目的端口:用于记录接收端的端口号(占用两个字节)16位UDP长度:确定UDP报文总长度,&…...

指针的深入了解6

1.回调函数 回调函数就是一个通过函数指针调用的函数。 如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数 时,被调用的函数就是回调函数。回调函数不是由该函数的实现方直接调用&#xff0…...

PHP之PDO_MYSQL扩展安装步骤

1,如果有php源码包可以不用下载,在 源码包下的 ext/ 下面可以找到 cd php-8.1.9/ext/pdo_mysql 2,如果存在,直接安装 /usr/local/php-8.1.9/bin/phpize ./configure --with-php-config/usr/local/php-8.1.9/bin/php-config make &&a…...

【pytorch】nn.linear 中为什么是y=xA^T+b

我记得读教材的时候是yWxb, 左乘矩阵W,这样才能表示线性变化。 但是pytorch中的nn.linear中,计算方式是yxA^Tb,其中A是权重矩阵。 为什么右乘也能表示线性变化操作呢?因为pytorch中,照顾到输入是多个样本一起算的&…...

vite打包原理

vite 工程化开发:打包工具 启动速度很快 核心原理还是webpack 把webpack封装了,把webpack对象封装了 和vue2整体结构几乎一致 webpack两种模式:开发&生产 代码打包编译,本地起一个web服务器实时预览编译后的结果 build 命令模…...

导出pdf 加密、加水印、加页脚

1.依赖 <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.10</version> </dependency> <dependency> …...

Flutter 仿抖音 TikTok 上下滑动 播放视频

Flutter 仿抖音 TikTok 上下滑动 播放视频UI框架&#xff0c;视频播放使用 video_player github&#xff1a;GitHub - PangHaHa12138/TiktokVideo: Flutter 仿抖音 TikTok 上下滑动 播放视频UI框架 实现功能&#xff1a; 1.上下滑动自动播放切换视频&#xff0c;loading 封面…...

计算机网络——网络层(2)

计算机网络——网络层&#xff08;2&#xff09; 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU)前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c; [跳转到网站](https://www.captainbed.…...

01-16Maven-SpringBoot入门

Maven继承Maven高级SpringSpringBoot入门 Maven 一、概念及功能 概念&#xff1a;Maven是Apache软件基金会组织维护的一款专门为Java项目提供项目构建和依赖管理的工具 1.1作用&#xff1a; 项目构建 构建&#xff1a;是一个将代码从开发阶段到生产阶段的一个过程&#xf…...

嵌入式开发中的串口打印调试与printf重定向

1. 为什么需要串口打印调试&#xff1f;在嵌入式开发中&#xff0c;调试手段的选择往往决定了问题排查的效率。使用仿真器&#xff08;如J-Link、ST-Link&#xff09;进行单步调试确实是最直观的方式&#xff0c;但在实际项目中经常会遇到以下限制&#xff1a;硬件限制&#xf…...

Tickers:嵌入式无阻塞软件定时器库

1. 项目概述Tickers是一个轻量级、无阻塞的定时回调库&#xff0c;专为资源受限的嵌入式系统设计。其核心目标是彻底替代delay()函数&#xff0c;在不牺牲实时性、不引入线程调度开销的前提下&#xff0c;实现高精度、可重入、多实例的周期性函数调用。该库不依赖操作系统内核&…...

c++ 享元模式实现 c++如何运用共享技术有效支持大量细粒度对象

绝大多数情况下不需要手写享元类——字符串字面量、string_view、shared_ptr、对象池等更轻量直接&#xff1b;仅当对象满足“内部状态稳定外部状态频繁变化创建开销大”三条件时才值得考虑&#xff0c;且应优先用shared_ptr显式管理共享引用。享元模式在 C 里到底该不该手写 f…...

工业C++内存安全漏洞TOP5:从STL误用到裸指针越界,92%的致命事故源于这3个隐藏陷阱

第一章&#xff1a;工业C内存安全漏洞的严峻现实与行业影响在工业控制、航空航天、智能汽车和电力系统等关键基础设施领域&#xff0c;C因其高性能与底层可控性被广泛采用。然而&#xff0c;其缺乏内存安全机制的本质特性&#xff0c;正持续引发严重事故&#xff1a;从特斯拉Au…...

Web-Maker深度解析:理解多预处理器支持的实现原理

Web-Maker深度解析&#xff1a;理解多预处理器支持的实现原理 【免费下载链接】web-maker A blazing fast & offline frontend playground 项目地址: https://gitcode.com/gh_mirrors/we/web-maker Web-Maker是一款强大的离线前端开发工具&#xff0c;它支持多种CSS…...

【回眸】私教课要点总结

前言 流程 辅助引体向上 高位下拉 坐姿划船 一、辅助引体向上&#xff08;器械引体 / 弹力带引体&#xff09; ✅ 核心训练目标 ✅ 动作要点 ❌ 常见错误 &#x1f50e; 小提示 二、高位下拉&#xff08;Lat Pulldown&#xff09; ✅ 核心训练目标 ✅ 动作要点 ❌…...

MQTTX主题节点表功能:如何高效管理复杂MQTT主题结构

MQTTX主题节点表功能&#xff1a;如何高效管理复杂MQTT主题结构 【免费下载链接】MQTTX A Powerful and All-in-One MQTT 5.0 client toolbox for Desktop, CLI and WebSocket. 项目地址: https://gitcode.com/gh_mirrors/mq/MQTTX MQTTX是一款功能强大的跨平台MQTT 5.0…...

Mem Reduct内存清理工具:掌握20+语言切换的终极技巧

Mem Reduct内存清理工具&#xff1a;掌握20语言切换的终极技巧 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct 你是否…...

3种核心能力解锁网页资源捕获:猫抓浏览器工具全解析

3种核心能力解锁网页资源捕获&#xff1a;猫抓浏览器工具全解析 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓(cat-catch)是一款专业的浏览器…...

visjs实战:5分钟搞定动态关系图,前端小白也能轻松上手

vis.js实战&#xff1a;5分钟从零构建动态关系图 第一次接触关系图可视化时&#xff0c;我被那些错综复杂却又井然有序的节点连线震撼到了。作为前端开发者&#xff0c;我们经常需要展示组织结构、社交网络或系统架构&#xff0c;而vis.js正是解决这类需求的瑞士军刀。不同于D3…...