ES6的new Set()方法有什么用法

Set 是什么?

  • Set是es6新增的数据结构,类似于数组,但它的一大特性就是所有元素都是唯一的,没有重复的值,我们一般称为集合。
  • Set本身是一个构造函数,用来生成 Set 数据结构。
  • Set函数可以接受一个数组作为参数用来初始化。

new Set()生成出来的数据是Set数据结构,需要自行转换成对应结构,size是set的长度标识。元素唯一使用全等‘===’判断,除了NaN,在set 中,NaN是相等的。

Set 的用法:

1.  数组去重,字符串去重
// 数组去重
let arr = [1, 2, 3, 4, 1, 2, 3];
new Set(arr)  // Set(4) {1, 2, 3, 4}// 将结果重新转换为数组
[...new Set(arr)] // [1, 2, 3, 4]// 数组方法也可以用来转换为数组
Array.from(new Set(arr))// 字符串去重
let str = 'abcdab';
new Set(str) // Set(4) {'a', 'b', 'c', 'd'}// 将结果重新转换为字符串
[...new Set(str)].join('')  // 'abcd'

只能去重简单数据类型,复杂数据类型不可以。

2. Set 实例的方法,增、删、查、清空

主要分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。

  • Set.prototype.add(value):添加某个值,返回 Set 结构本身。
  • Set.prototype.delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
  • Set.prototype.has(value):返回一个布尔值,表示该值是否为Set的成员。
  • Set.prototype.clear():清除所有成员,没有返回值。
let s = new Set();
s.add(1).add(2).add(2);  // 2被加入了两次,但实际上只会被添加一次s.size // 2 Set(2) {1, 2}// 判断Set是否包含某值
s.has(1) // true
s.has(2) // true
s.has(3) // false// 删除Set中的值
s.delete(2);
s.has(2) // false// 清除所有值
s.clear()
s // Set(0) {size: 0}
3. 遍历方法

1) 遍历Set的keys(), 返回键名的遍历器,相等于返回键值遍历器values()

2) 遍历Set的values(), 返回键值的遍历器

3) 遍历Set的entries(), 返回键值对的遍历器

4) 遍历forEach(), 使用回调函数遍历每个成员

let arr = ['a', 'b', 'c'];let result = new Set(arr);// keys()
for(let i of result.keys()) { console.log(i) // 依次打印 a, b, c
}// values()
for(let i of result.values()) { console.log(i) // 依次打印 a, b, c
}// entries()
for(let i of result.entries()) { console.log(i) // 依次打印 ['a', 'a']  ['b', 'b']  ['c', 'c']
}// forEach()
result.forEach((value, key) => {console.log(`${key}: ${value}`) // 依次打印 a: a   b: b   c: c
})

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

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

相关文章

数字化赋能乡村:开启乡村发展新纪元

随着信息技术的迅猛发展和数字化浪潮的席卷,乡村发展正迎来前所未有的机遇与挑战。数字化赋能乡村,不仅是推动农业现代化、提升农村治理水平的必由之路,更是开启乡村发展新纪元的关键所在。本文将围绕数字化赋能乡村这一主题,探讨…

好物视频素材哪里找?8个视频素材库免费网址大全

在这个数字化的时代,高清视频已经成为了一种强大的沟通工具,无论是个人分享、教育培训还是商业广告,高质量的视频内容都能够有效地吸引观众的注意力。为了帮助你轻松找到理想的无水印视频素材,下面我为你精心挑选了一系列全球视频…

可以写进简历的软件测试电商项目,不进来get一下?

前言 说实话,在找项目的过程中,我下载过(甚至付费下载过)N多个项目、联系过很多项目的作者,但是绝大部分项目,在我看来,并不适合你拿来练习,它们或多或少都存在着“问题”&#xff…

[挖坟]如何安装Shizuku和LSPatch并安装模块(不需要Root,非Magisk)

2023年12月13日,LSPatch 停止维护 2024年1月8日,LSPosed 停止维护 2024年1月8日,ZygiskNext 停止维护 2024年1月9日,KernelSU 停止维护 这里使用 ColorOS 14 演示,其他品牌手机类似 安装 Shizuku 官网: https://shiz…

网络安全 | 什么是攻击面管理?

关注WX: CodingTechWork 介绍 攻击面管理 (Attack Suface Management, ASM) 可以持续发现、分析、修复和监控构成组织攻击面的网络安全漏洞和潜在攻击媒介。ASM可以识别目标,并根据其暴露给恶意攻击者的可能性来评估风险,获得攻击者的视角,…

【模糊逻辑】Type-1 Fuzzy Systems的设计方法和应用-1

【模糊逻辑】Type-1 Fuzzy Systems的设计方法和应用 4.1 时间序列预测4.2 提取规则的方法4.2.1 One-pass method(一次性方法)4.2.1.1数据赋值法例子1 4.2.1.1 WM方法 4.2.2 最小二乘法4.2.3 基于导数的方法4.2.4 SVD-QR方法4.2.6 迭代法 4.1 时间序列预测…

Oracle的物理结构解析

这些图是我自己画的,我也会在我的公众号【会用数据库】解析。理解起来非常简单,而且非常好记。不用死记硬背,有兴趣可以来公众号看呀。

matrix-breakout-2-morpheus

信息收集: 1.nmap存活探测: nmap -sn -r 192.168.10.1/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-06 12:13 CST Nmap scan report for 192.168.10.1 Host is up (0.00056s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap…

TDengine 使用爬坑

TDengine 安装 爬坑 使用安装包立即开始 | TDengine 文档 | 涛思数据 (taosdata.com) linux 服务端版本 TDengine-server-3.2.3.0-Linux-x64.rpm (61.2 M) taosTools-2.5.2-Linux-x64-comp3.rpm (0.2 M) windows 客户端版本 TDengine-client-3.2.3.0-Windows-x64.exe (9.…

高级排序算法-快速排序

高级排序算法-快速排序 这个方法的代码参考leecode平台的大佬——liweiwei1419的文章,原文出处:https://leetcode.cn/leetbook/read/learning-algorithms-with-leetcode/55szu2/ 本文语言用的是C: 快速排序实现一(大放过&#…

OpenHarmony实战:Combo解决方案之ASR芯片移植案例

本方案基于 OpenHarmony LiteOS-M 内核,使用 ASR582X 芯片的 DEV.WIFI.A 开发板进行开发移植。作为典型的 IOT Combo(Wi-FiBLE)解决方案,本文章介绍 ASR582X 的适配过程。 编译移植 目录规划 本方案的目录结构使用 Board 和 So…

MySQL面试题系列-11

MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据…

多线程+互斥+条件变量题目

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:题目解析 目录 👉🏻 完成两个线程通过条件变量实现交替打印错误代码加优化(c线程库版本)版本2(使用phtread.h库&#xff…

蓝桥杯每日一题:约数个数(质因数)

题目描述: 输入 n 个整数,依次输出每个数的约数的个数。 输入格式 第一行包含整数 n。 第二行包含 n 个整数 ai。 输出格式 共 n 行,按顺序每行输出一个给定整数的约数的个数。 数据范围 1≤n≤1000, 1≤ai≤10^9 输入样例&#xff…

机器学习知识点全面总结

机器学习按照模型类型分为监督学习模型、无监督学习模型两大类。 1、有监督学习 有监督学习通常是利用带有专家标注的标签的训练数据,学习一个从输入变量X到输入变量Y的函数映射。Y f (X),训练数据通常是(nx,y)的形式,其中n代表训练样本的大…

C# 构建可定时关闭的异步提示弹窗

C# 构建可定时关闭的异步提示弹窗 引言1、调用接口的实现2、自动定时窗口的实现 引言 我们在最常用最简单的提示弹框莫过于MessageBox.Show( )的方法了,但是使用久了之后,你会发现这个MessageBox并不是万能的,有事后并不想客户去点击&#x…

力扣刷题(1-10)

1. 两数之和 解法一&#xff1a;暴力解法 #include<cstdio> #include<iostream> #include<cstdlib> #include<vector> using namespace std; vector<int> twoSum(vector<int>& nums, int target);int main() {vector<int>nums…

ARM汇编与逆向工程:揭秘程序背后的神秘世界

文章目录 一、ARM汇编语言&#xff1a;底层世界的密码二、逆向工程&#xff1a;软件世界的侦探工作三、ARM汇编与逆向工程的完美结合四、ARM汇编逆向工程的风险与挑战五、ARM汇编逆向工程的未来展望《ARM汇编与逆向工程 蓝狐卷 基础知识》内容简介作者简介译者简介ChaMd5安全团…

【架构三】结构化方法和面向对象方法

结构化方法和面向对象方法是软件开发中两种不同的方法论。它们在设计和组织软件系统时具有一些显著的区别&#xff0c;以下是它们之间的主要不同点&#xff1a; 理念和思想 结构化方法&#xff1a;结构化方法强调将问题分解为更小、更简单的子问题&#xff0c;然后使用顺序、…

C语言第四十弹---预处理(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 预处理 1、#和## 1.1 #运算符 1.2、##运算符 2、命名约定 3、#undef 4、命令行定义 5、条件编译 6、头文件的包含 6.1、头文件被包含的方式 6.1.1、本地…