js中Set基本使用_js set-程序员宅基地

技术标签: JavaScript  前端  js  javascript  开发语言  ecmascript  

介绍

ECMAScript 6 新增的 Set 是一种新集合类型,为这门语言带来集合数据结构。Set 在很多方面都像是加强的 Map,这是因为它们的大多数 API 和行为都是共有的。

基本API

1. 创建Set实例

使用 new 关键字和 Set 构造函数可以创建一个空集合:

const s = new Set();

如果想在创建的同时初始化实例,则可以给 Set 构造函数传入一个可迭代对象,其中需要包含插入到新集合实例中的元素(Set 可以包含任何 JavaScript 数据类型作为值):

const s = new Set(["val1", 1, true, {
    }, undefined, function fun() {
    }]);

注意:Set结构不会添加重复的值

const s = new Set([1, 1, 2, 3, 4, 4, 5, 6, 7, 4, 2, 1]);
Array.from(s); //  [1, 2, 3, 4, 5, 6, 7]

经常用Set解决数组去重问题

const arr = [1, 2, 3, 3, 4, 5, 4, 4, 2, 1, 3];
Array.from(new Set(arr)); // [1, 2, 3, 4, 5]
2. Set实例转数组
const s = new Set([1, 2, 3]);
Array.from(s); // [1, 2, 3]
3. size属性

size: 获取Set实例的元素个数:

const s = new Set([1, 2, 3]);
s.size; // 3
4. add()

add(): 添加元素:

const s = new Set();
s.add(1).add(2).add(3);
Array.from(s); // [1, 2, 3]
5. has()

has(): 查询Set实例是否存在某元素(返回布尔值):

const s = new Set();
s.add(1).add(2).add(3);
s.has(1); // true
6. delete()

delete(): 删除Set实例中某个元素(返回布尔值):

const s = new Set();
s.add(1).add(2);
s.delete(1);
Array.from(s); // [2]
7. clear()

clear(): 清空Set实例:

const s = new Set();
s.add(1).add(2).add(3);
Array.from(s); // [1, 2, 3]
s.clear();
Array.from(s); // []
8. 迭代

keys():返回键名;
values(): 返回键值;
entries(): 返回键值对;
键名=键值

const s = new Set();
s.add(1).add(2).add(3);
Array.from(s.keys()); // [1, 2, 3]
Array.from(s.values()); // [1, 2, 3]
Array.from(s.entries()); // [[1, 1], [2, 2], [3, 3]]
for-of:
const s = new Set();
s.add(1).add(2).add(3);
for (const i of s) {
    
	console.log(i);
}
// 1
// 2
// 3
forEach
const s = new Set();
s.add(1).add(2).add(3);
s.forEach((value, key) => console.log(key + ' : ' + value));
// 1 : 1
// 2 : 2
// 3 : 3
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45112114/article/details/123231261

智能推荐

字节转换比特位c语言,C语言实现双字节在数组中按比特位移动-程序员宅基地

文章浏览阅读728次。先说一下应用场合,在LED点阵显示屏中,为了节省flash空间,常用一个bit位来标记哪个灯是否点亮。为了做出比较炫的效果,比如16 * 16像素gif动画边边移动边跳跃。就应用到该思想。双字节是16bit位,数组的bit位是数组长度乘以8(类型指的是uint8_t),比如uint8_t a[5]长度则是5 * 8 = 40。该函数的思想就是这双字节的16bit位在在数组a[5]中40bit位中移..._将数组转比特 c

大数据基础课第一课 Hadoop详解_大数据 hadoop 课程内容-程序员宅基地

文章浏览阅读500次。Hadoop概述课程目标:知道Hadoop的概念及发展历史说出hadoop的核心组件知道hadoop的优势1.1 什么是HadoopHadoop名字的由来作者:Doug cuttingHadoop项目作者的孩子给一个棕黄色的大象样子的填充玩具的命名Hadoop的概念:Apache Hadoop 是一个开源的, 可靠的(reliable), 可扩展的(scalable)分布式计算框架允许使用简单的编程模型跨计算机集群分布式处理大型数据集可扩展: 从单个服务器_大数据 hadoop 课程内容

超越性的AI——GitHub Copilot,有了它还需要程序员敲代码吗?_copilot 工作原理-程序员宅基地

文章浏览阅读1.8k次。GitHub Copilot 究竟是什么?Copilot 是一种基于公开源代码和文本训练的人工智能。它实时为程序员提供代码建议。Copilot 还使用 GPL 等 Copyleft 许可下的众多 GitHub 存储库作为培训材料。那么为什么它和“抄袭有关?”这还和当年那一段“雷神代码”有关。有行业从业者称,在利用GitHub Copilot 走平方根倒数速算法(Fast Inverse Square Root),结果出人意料。它简直“完美复刻”那段著名的代码,就连当年.._copilot 工作原理

Linux学习笔记-B站韩顺平_韩顺平linux笔记-程序员宅基地

文章浏览阅读1.6w次,点赞95次,收藏536次。linux 是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业界的认可,_韩顺平linux笔记

游戏脚本用什么语言写_为什么要写分镜头脚本?-程序员宅基地

文章浏览阅读1.1k次。分镜头脚本是最实用的影视创作脚本,它是在文学脚本的基础上运用蒙太奇思维和蒙太奇技巧进行再创作的脚本,即根据拍摄提纲或文学脚本,参照拍摄现场的实际情况,分隔场次或段落,并运用形象的对比、呼应、积累、暗示、并列、冲突等手段,来建构屏幕上的总体形象。分镜头脚本设计是从文字到影像的预演,是影视思维的具体呈现,是影视导演最为重要的工作之一。//分镜头脚本设计的目标//微电影作为影视创作的新类型,虽然具有“微..._游戏分镜脚本

PyQt5学习入门-2-信号/槽学习_self.pushbutton_2.clicked.connect(self.textbrowser-程序员宅基地

文章浏览阅读1.7k次,点赞6次,收藏4次。摘要:PyQt5学习入门-1简单对整个流程进行介绍。下面的这篇文章会做一个简单的计算器框架。最终实现的界面效果如下1.本章的目的写这篇文章需要能够让读者学习到以下几点:1.如何使用Text Browser(可以理解为文本的输出框)2.如何使用按键(pushButton),以及如何通过鼠标来触发任务3.如何进行布局2.拖拽组件打开Qt designer后,我们首先新建一个widget。新建一个wid_self.pushbutton_2.clicked.connect(self.textbrowser.clear)

随便推点

在Kali中安装IBus的拼音输入法_ibus-pinyin 拼音 无法定位软件包-程序员宅基地

文章浏览阅读1.4w次。IBus,全称为Intelligent Input Bus,是GNU/Linux和类UNIX操作系统下的以GPL协议分发源代码的开源免费多语言输入法框架。在Kali Linux中默认是没有安装有中文的输入法的,为了方便可以安装IBus的拼音输入法。在命令行中直接输入下面命令安装IBus: apt-get install ibus 过程如下: 接着输入下面命令安..._ibus-pinyin 拼音 无法定位软件包

ActiveMQ消息保存到MySQL-程序员宅基地

文章浏览阅读175次。<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed..._activemq将消息存储在mysql

Go 语言 入门 && 基于 GoLand 2023.1 创建第一个Go程序_goland创建go项目-程序员宅基地

文章浏览阅读4.9w次,点赞4次,收藏6次。Go 语言 入门 && 基于 GoLand 2023.1 创建第一个Go程序Go 语言 入门 && 基于 GoLand 2023.1 创建第一个Go程序Go 语言 入门 && 基于 GoLand 2023.1 创建第一个Go程序Go 语言 入门 && 基于 GoLand 2023.1 创建第一个Go程序Go 语言 入门 && 基于 GoLand 2023.1 创建第一个Go程序Go 语言 入门 && 基于 GoLand 2023.1 创建第一个Go程序Go 语言 入门 && 基于 GoLand 2023.1_goland创建go项目

python分布式计算框架-Parallel Python-程序员宅基地

文章浏览阅读1.9k次。python分布式计算框架-Parallel Python本文翻译自:https://www.parallelpython.com/概述Parallel Python是一个python模块,提供了在SMP(具有多个处理器或核心的操作系统)和群集上并行执行python代码的机制。 Parallel Python具有轻量级、易安装、易与其他python软件集成的特性。 Parallel Python是用纯Python语言写的开源跨平台的模块。特征Python代码在集群或SMP上并行执行。_parallel python

2019年电气试验作业安全生产模拟考试题库及答案_作为电气工作者 员工必须熟知-程序员宅基地

文章浏览阅读2.3k次。2019年电气试验作业安全生产模拟考试题库及答案题库来源:安全生产模拟考试一点通第1题、【判断题】10kV等级的电气设备工频耐压试验最高试验电压为42kV。A、正确 B、错误正确答案:A第2题、【判断题】50%击穿放电电压,是指在该冲击电压作用下放电的概率为50%。A、正确 B、错误正确答案:A第3题、【判断题】66kV电气设备工频耐压试验变压器的最高试验电压为200k..._作为电气工作者 员工必须熟知

CentOS7安装Hadoop3完全分布式_centos7 hadoop3安装-程序员宅基地

文章浏览阅读7.4k次,点赞8次,收藏37次。前提条件拥有CentOS7服务器版环境集群规划项目 服务器node2 服务器node3 服务器node4 HDFS NameNode、DataNode DataNode DataNode、SecondaryNameNode Yarn NodeManager Resourcemanager、NodeManager NodeManager 虚拟机准备通网络能ping通外网,例如:ping baidu.com如_centos7 hadoop3安装

推荐文章

热门文章

相关标签