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

智能推荐

Java多线程下载并具断点续传功能JAR_断点续传 开源jar-程序员宅基地

文章浏览阅读1.7w次。这两天把原来写的多线程下载程序整理了一下,考虑到原来的都是散文件,使用起来也不方便,所以决定把其写JAR,这样,使用起来也方便。并且增加使用XML保存下载文件以便下次再次下载,也修正了原来的一些BUG,只要你的电脑允许,想同时有多少个下载就有多少个下载。 这里我有一个示例,因为这里用到了JDOM处理XML文件,本来是想把用到的JDOM也把包到downFile.jar(下载地址:ht_断点续传 开源jar

mybatis-generator-maven-plugin插件使用-程序员宅基地

文章浏览阅读1.2w次,点赞3次,收藏13次。该插件用于连接数据库自动生成Mybatis需要的代码环境:springboot,idea,jdk8搭建springboot项目:idea->file->new->Spring initialzr->next->进入配置:java Version选择8,其余可以默认,next->需要提那就的依赖(需要的功能),默认可以不添加。后续需要去pom.xml配置即可->next->finish。进入项目,点击pom.xml,添加插件。(此处包括my_mybatis-generator-maven-plugin

【卡梅德生物】蛋白表达之酵母表达载体-程序员宅基地

文章浏览阅读424次,点赞10次,收藏7次。首先,酵母细胞是一种真核细胞,与人类细胞相似,因此酵母表达系统可以用于生产与人类相关的蛋白质,酵母载体是指将外源基因表达于酵母细胞中的一种工具。

Eclipse常用设置和常用快捷方式-程序员宅基地

文章浏览阅读555次。2012-06-17 12:37 149人阅读 评论(0)收藏举报Eclipse常用设置和常用快捷方式1、提示键配置一般默认情况下,Eclipse ,MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的,主要是Eclipse ,MyEclipse本身有很多选项是默认关闭的,要开发者自己去手动配置。如果开发

使用vue-preview 缩略图预览 完美解决-程序员宅基地

文章浏览阅读4.5k次。首先先安装插件cnpm i vue-preview -S在vue全局,也就是main.js声明插件import VuePreview from 'vue-preview'Vue.use(VuePreview)在组件里插入 <div class="thumbs"> <vue-preview :slides="list" @close="handleClos..._vue-preview

云原生学习的最佳路径_云原生学习路线-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏16次。云原生最佳学习路径,csdn学习会员的福利_云原生学习路线

随便推点

SDL编程入门(25)限制帧率_sdl_setticks-程序员宅基地

文章浏览阅读1.5k次。限制帧率我们可以用SDL定时器做的另一件事是手动限制帧率。在这里,我们将禁用vsync,并保持最高帧率。//屏幕尺寸常量const int SCREEN_WIDTH = 640;const int SCREEN_HEIGHT = 480;const int SCREEN_FPS = 60;const int SCREEN_TICKS_PER_FRAME = 1000 / SCREEN_FPS;在这个演示中,我们将正常渲染我们的帧,但在帧的最后,我们将等待,直到帧时间完成。例如这里,当你想以6_sdl_setticks

Linux下的uml工具_linux uml-程序员宅基地

文章浏览阅读1.1w次。1.DIA ubuntu下推荐的,和viso的风格以及操作比较接近,但画出来的东西感觉不怎么美观,手工修改显示组件的属性会得到好一些的效果。2.yed 和其他的UML工具的使用方式有较大差别,因为它只有一个组件,鼠标点下去就会产生一个,通过修改它的属性,可以得到各种图形,默认的type有:image,UMLNode,UML,Shape,每个类别下的属性都很多,可以满足日常工作需要。只_linux uml

Writing an LLVM Pass_writing pass on llvm17-程序员宅基地

文章浏览阅读2.1k次,点赞2次,收藏8次。目录1.简介 - 什么是pass?2.快速入门 - 写下hello world3.设置构建环境4.Basic code required5.Pass类和要求6.ImmutablePass类7.ModulePass类8.CallGraphSCCPass类9.FunctionPass类10.doInitialization(Module&)方法11.L..._writing pass on llvm17

linux最低配置版本,Linux各个版本配置要求-程序员宅基地

文章浏览阅读4.8k次。桌面版的Linux越来越受到用户的欢迎, 它的画面也越来越精细。但是它所需要的配置不像windows那样来得那么夸张,到底linux的配置要求是什么样的呢?答案是:不需要太高的配置。让我们来看看将于本周发布的Ubuntu9.04,官方推荐的最低配置为700MHz处理器和256MB内存,而我认为这配置很低。根据我的经验,你可以在那个缓慢的处理器上运行GNOME 2.26,但是内存容量实在是太低了。你..._linuxptp最低版本要求

【12C考题精解】OCP 1z0-060 QUESTION 3: Managing the SYSAUX Tablespace-程序员宅基地

文章浏览阅读155次。QUESTION 3 Which two statements are true about the use of the procedures listed in the v$sysau..._oracle ocp 1z0-060模拟试题库

Spring的简介和工作原理_spring原理和实现机制-程序员宅基地

文章浏览阅读1.3k次。一、简介Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。二、工作原理Spring最核心的两个点就是IOC和AOP1、 IoC(Inversion of control): 控制反转概念:控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系核心:bean工厂;..._spring原理和实现机制

推荐文章

热门文章

相关标签