ES6中的Set

news/2024/7/11 1:34:57 标签: ES6, Set

ES6中新增了Set这一数据结构,这在许多编程语言中都能见到。Set很像数组,但是它的元素都是唯一的,也就是说Set内的元素没有两个是一样的。

let s = new Set();

这样就构造了一个Set

数组用pushshift方法分别从数组的前端或后端添加数据,而在Set中,我们可以通过add方法往Set内添加数据。

let s = new Set();
let arr = [1,2,2,3,4,4];

arr.forEach((item)=>{
    s.add(item); 
});

for(let i of s){
    console.log(i);
}
// 1 2 3 4

从输出结果也可看出Set是不存在两个相同的元素的。值得注意的是,add方法会返回Set对象。也就是说,add的方法的使用可以跟Promise对象的then方法一样采用链式调用。

let s = new Set();
s.add(1).add(2).add(3).add(4);

在构造Set的时候还可以传入一个数组来初始化。

let s = new Set([1,2,3,4,4]);
console.log(s.size);    //4

看到这里,我突然想起在开发中经常会碰到要对数组进行去重的操作。而通过使用扩展操作符Set就可以比较方便的解决这个问题。

let arr = [1,2,2,2,3,3];
let s = new Set(arr);
arr = [...s];
console.log(arr);   //[1,2,3];

在数组中如果我们想判断是否存在某个元素,我们可以使用indexOf方法,通过返回的索引值来判断。而在Set中,我们可以直接使用has方法。

let s = new Set();
s.add(1).add(2).add(3);
console.log(s.has(1));  //true

说了那么多数组跟Set的联系,而事实上Set也可以通过Array.from方法转换成数组。

let s = new Set([1,2,3,4,5,5]);
let arr = Array.from(s);

http://www.niftyadmin.cn/n/1700921.html

相关文章

Unity3D 入门 - 工作区域介绍 与 入门示例

一. 工作区域详解1. Scence视图 (场景设计面板)scence视图简介 : 展示创建的游戏对象, 可以对所有的游戏对象进行 移动, 操作 和 放置;-- 示例 : 创建一个球体, 控制摄像机, 让球体在摄像机拍摄的视图中显示出来;(1) 摄像机导航摄像机旋转(Tumble) : alt 鼠标左键, 摄像机会按…

html仿百度首页

<!DOCTYPE html> <html><head><title>百度页面</title><style>.searchBox{background-image:url("3.png");background-repeat:no-reapeat;padding-left:20px;}</style></head><body><!-- 顶部设置 -->&…

用Electron开发一个文件浏览器(一)

首先先看看这个文件浏览器长什么样子 然后上Github地址&#xff0c;源码都在这上面。 必须得说明的是&#xff0c;这个应用是看着《跨平台桌面应用开发–Electron与NW.js》来写的&#xff0c;这是书上的一个例子。不过因为书上更多侧重于演示&#xff0c;所以并不完善&#xf…

docker 安装nacos_在.NET Core中用最原生的方式读取Nacos的配置

一篇《ASP.NET Core结合Nacos来完成配置管理和服务发现》简单介绍了如何让.NET Core程序接入Nacos&#xff0c;之前的SDK里面更多的是对Nacos的Open API进行了封装以及对服务注册和发现的封装。配置这一块当时并没有过多的处理&#xff0c;用起来有时感觉不会特别顺手&#xff…

python不能调试的原因

最近有一个python项目&#xff0c;打开项目不能登录&#xff0c;想调试一下看看为什么&#xff0c;发现不能调试了&#xff0c;郁闷了&#xff0c;搞了半天&#xff0c;发现是进程里有多个python.exe&#xff0c;结束掉就好了。转载于:https://www.cnblogs.com/muyou/p/6376899…

Linux ulimit命令

在Linux下面部署应用的时候&#xff0c;有时候会遇上Socket/File: Can’t open so many files的问题&#xff0c;比如还有Squid做代理,当文件打开数到900多时速能就非常快的下降&#xff0c;有可能打不开网页.其实Linux是有文件句柄限制的&#xff0c;而且Linux默认不是很高&am…

用Electron开发一个文件浏览器(二)

先附上Github地址&#xff0c;源码都在这上面。 如果没看过&#xff08;一&#xff09;&#xff0c;可以点这里 在&#xff08;一&#xff09;中&#xff0c;程序已经能够获得home目录和home目录下的所有文件、文件夹的路径所代表的文件对象。可是现在的主界面除了最顶上的工…

Flask按钮调用python函数

直接复制测试即可&#xff0c;单击按钮后控制台打印文字。 这是index.html前端代码&#xff1a; <!doctype html> <html> <head><title>The jQuery Example</title><h2>jQuery-AJAX in FLASK. Execute function on button click</h2&…