05 ES6中的Set类型

ES6 中引入的 Set 对象是一种集合数据结构,它存储不重复的值,类似于数组,但数组可以包含重复的元素,而 Set 不会。以下是 Set 对象的一些关键特性和常用方法:

特性

  1. 唯一性Set 中的每个值必须是唯一的,不允许重复。
  2. 无序性:虽然 Set 是通过添加顺序来存储元素,但这个顺序并不在集合中体现,不能通过索引来访问元素。
  3. 类型多样性:可以存储任何类型的值,包括对象。

创建 Set

  • 使用 new Set() 构造函数创建一个空的 Set
  • 也可以在创建时传入一个可迭代对象(如数组),自动去除其中的重复元素。
let mySet = new Set();
let mySetFromArray = new Set(['a', 'b', 123, 123, true, 123123123]);

常用方法

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

    console.log(mySetFromArray.size); // 输出: 5
    
  2. add(value):添加一个元素到 Set 对象,返回 Set 结构本身。

    mySet.add('海绵宝宝');
    
  3. delete(value):从 Set 对象中移除一个元素。

    mySet.delete('b');
    
  4. has(value):检查 Set 对象是否包含某个值,返回布尔值。

    console.log(mySet.has(123)); // 输出: true 或 false
    
  5. clear():移除 Set 对象中的所有元素。

    mySet.clear();
    
  6. forEach(callbackFn, thisArg):对 Set 对象中的每个值执行给定函数。

    mySet.forEach((value) => console.log(value));
    

转换为数组

  • 使用扩展运算符 ... 可以将 Set 转换为数组。
  • 使用 Array.from() 方法也可以将 Set 转换为数组。
let arrayFromSet = [...mySetFromArray];
let arrayFromSet2 = Array.from(mySetFromArray);

数组去重

  • 使用 Set 可以轻松实现数组去重。
let arr = [1, 11, 12, 23, 22, 11, 12, 1, 4, 64, 3];
let uniqueNumbers = new Set(arr);
let resArr = [...uniqueNumbers];

注意事项

  • Set 中的元素是按插入顺序存储的,但只能通过迭代访问。
  • 虽然 Set 可以存储对象,但对象作为 Set 的元素时,是通过引用比较的,因此相同的对象会被视为不同的元素。

示例

// 创建一个 Set 实例
let mySet = new Set(['a', 'b', 123, true]);// 打印 Set 实例
console.log(mySet); // 输出: Set { 'a', 'b', 123, true }// 获取 Set 的大小
console.log(mySet.size); // 输出: 4// 添加元素
mySet.add('海绵宝宝');
console.log(mySet); // 输出: Set { 'a', 'b', 123, true, '海绵宝宝' }// 删除元素
mySet.delete('b');
console.log(mySet); // 输出: Set { 'a', 123, true, '海绵宝宝' }// 检查元素是否存在
console.log(mySet.has(123)); // 输出: true// 清空 Set
mySet.clear();
console.log(mySet); // 输出: Set {}

通过这些特性和方法,Set 对象提供了一种强大且灵活的方式来处理不重复的集合数据。

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

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

相关文章

AIGC的神秘面纱——利用人工智能生成内容改变我们的生活

近年来,人工智能生成内容(AIGC)正在迅速改变我们与数字世界互动的方式。从自动写作到图像生成,AIGC正逐渐走进我们的日常生活。它不仅提高了效率,还为创意和商业活动带来了新的可能性。让我们一起来探索AIGC的世界&…

解读 IP 地址定位

你是否好奇众多平台推出的 IP 归属地功能是如何确定的位置?其实这些说起来并不难。接下来让我来给你们说一下其中的“奥秘”吧~ 一、IP 定位背后的原理 首先,从“IP 地址”开始。因为每个联网设备在接入网络时都会被分配一个独一无二的 IP 地址。根据这…

iptables规则设置

宿主机iptables策略实施 #基础策略 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT && \ iptables -A INPUT -p icmp -j ACCEPT && \ iptables -A INPUT -p udp -j ACCEPT && \ iptables -A INPUT -i lo -j ACCEPT #允许某个IP地址…

通信原理思科实验三:无线局域网实验

实验三 无线局域网实验 一:无线局域网基础服务集 实验步骤: 进入物理工作区,导航选择 城市家园; 选择设备 AP0,并分别选择Laptop0、Laptop1放在APO范围外区域 修改笔记本的网卡,从以太网卡切换到无线网卡WPC300N 切…

3.多租户调研1

https://gitee.com/xiaoqiangBUG/hello-ruoyi-cloud.git 1.mybatis plus 的插件 TenantLineInnerInterceptor 是 MyBatis Plus 框架中的一个拦截器,它用于实现多租户系统的数据隔离。在多租户应用中,不同的租户应该只能访问到自己的数据,而…

TCP网络socket编程(面向连接)

Tcp面向链接、面向字节流和文件的读写非常类似():客户端创建套接字主动建立连接,服务器监听套接字一直等待连接的到来,监听到一个,就创建一个新的套接字用于IO 服务器: 创建套接字&#xff1a…

【数据结构】单链表面试题(Java + 力扣 + 详解)

🎇🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 人生格言: 当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友…

Python—面向过程编程,详细讲解(类和实例,初始化函数,类中封装数据与操作)

1.类和实例 类:类别 实例(对象):类型塑造出来的某一个具体的内容 isinstance(对象,类) 返回一个对象是否是一个类的实例 # 声明一个整数类的实例10 a int(10) # a 10 print(type(a), isinstance(a, int)) a flo…

Android5.1 NAT功能不生效问题

在Android5.1系统上的adb shell或调试串口SHELL命令行下运行相应的iptables命令,NAT功能仍不生效,但同样的命令在Android4.4和4.2上验证是成功的,于是通过iptables -t nat -nvL和iptables -nvL命令对比,并未发现区别,后…

动态代理更改Java方法的返回参数(可用于优化feign调用后R对象的统一处理)

动态代理更改Java方法的返回参数(可用于优化feign调用后R对象的统一处理) 需求原始解决方案优化后方案1.首先创建AfterInterface.java2.创建InvocationHandler处理代理方法3. 调用 实际运行场景拓展 需求 某些场景,调用别人的方法&#xff0…

React: class 和 style

一、class 1、在react中使用className属性来绑定类名 <div className"header flex-middle-middle">添加2个类名 </div>2、动态添加类名 <div className{item ${nameactive ? active : }}>动态添加active类名 </div>二、style 1、react中内…

Chapter 15 Python函数进阶

欢迎大家订阅【Python从入门到精通】专栏&#xff0c;一起探索Python的无限可能&#xff01; 文章目录 前言一、函数多返回值二、函数的多种传参方式三、匿名函数 前言 在Python中&#xff0c;函数是组织代码、提高重用性与可读性的基本构建块。随着程序逻辑的复杂性增加&…

在 Windows 上安装 PostgreSQL

官网下载地址&#xff1a; https://www.enterprisedb.com/downloads/postgres-postgresql-downloadsWindows平台 官网直接提供exe安装包&#xff0c;没有手动安装的压缩包 postgresql-14.4-1-windows-x64.exe几个重要的安装选项 安装界面会指定服务程序和库两个路径&#xf…

tensorboard add_text() 停止自动为尖括号标记添加配对的结束括号</>

问题 调用tensorboard的add_text()记录文本信息时&#xff0c;如果文本中含有含尖括号的标记&#xff0c;就会被自动识别为html标记&#xff0c;因此tensorboard会自动生成对应的带斜杠的结束标记。 例如要记录的文本是 abc<abc>&#xff0c;在tensorboard中就会显示为a…

压测实操--kafka-consumer压测方案

作者&#xff1a;九月 环境信息&#xff1a; 操作系统centos7.9&#xff0c;kafka版本为hdp集群中的2.0版本。 Consumer相关参数 使用Kafka自带的kafka-consumer-perf-test.sh脚本进行压测&#xff0c;该脚本参数为&#xff1a; thread&#xff1a;测试时的单机线程数&…

刷机维修进阶教程-----何谓“tee损坏” 指纹丢失 掉帧 传感器失效?详细修复步骤教程

TEE损坏指的是安卓机型中Key Attestation密钥认证所依赖的可信应用中的证书库被破坏了。然后拒绝为指纹密匙认证提供服务。加密的密匙由TEE负责管理。tee损坏只影响当前机型的密匙认证。不影响加密。通俗的理解。如果你机型维修或者刷机或者解锁或者格机 全檫除分区等等后有异常…

html-docx-js和file-saver实现html导出word

依赖html-docx-js&#xff0c;file-saver&#xff0c;html2canvas import { asBlob } from html-docx-js/dist/html-docx; import { saveAs } from file-saver; import html2Canvas from html2canvas;const handleImageToBase64 (cloneEle) > {let imgElements cloneEle.…

Elasticsearch集群配置-节点职责划分 Hot Warm 架构实践

前言 本文主要讲了ES在节点部署时可以考虑的节点职责划分&#xff0c;如果不考虑节点部署&#xff0c;那么所有节点都会身兼数职&#xff08;master-eligible &#xff0c;data&#xff0c;coordinate等&#xff09;&#xff0c;这对后期的维护拓展并不利&#xff0c;所以本文…

软件测试10 渗透性测试及验收测试

渗透性测试及验收测试 知识回顾 Web UI自动化测试 引入自动化测试需要满足的条件自动化测试流程简述自动化测试的关键技术Selenium页面元素定位方式 目标 了解安全测试的概念了解常见的安全漏洞了解安全测试流程及测试工具的使用理解验收测试的概念掌握Alpha测试和Beta测试…

【React 】开发环境搭建详细指南

文章目录 一、准备工作1. 安装 Node.js 和 npm2. 选择代码编辑器 二、创建 React 项目1. 使用 Create React App2. 手动配置 React 项目 三、集成开发工具1. ESLint 和 Prettier2. 使用 Git 进行版本控制 在现代前端开发中&#xff0c;React 是一个非常流行的框架&#xff0c;用…