ES6中的Set数据结构

模式流沙
• 阅读 1300

Set 是ES6提供的一种新的数据结构,它允许你存储任何类型的唯一值,而且Set中的元素是唯一的。

我们用new操作符来生成一个Set对象


基本用法

let arr = [1,2,3,1,2,2,1,2,1,1];
let set = new Set(arr);
set.size // 3
[...set] // [1,2,3] 元素是唯一的 可以用来数组去重

属性和方法

set结构的实例有以下属性

Set.prototype.constructor: 构造函数,默认就是Set函数。
Set.prototype.size: 返回Set实例的成员总数。

方法

方法 用法
Set.prototype.add(value) 在Set对象尾部添加一个元素。返回Set对象
Set.prototype.clear() 移除Set对象内的所有元素
Set.prototype.delete(value) 移除Set中与value值相等的元素
Set.prototype.has() 返回一个布尔值,表示该值是否为Set的成员
Set.prototype.keys() 返回键名的遍历器
Set.prototype.values() 返回键值的遍历器
Set.prototype.entries() 返回键值对的遍历器
Set.prototype.forEach() 使用回调函数遍历每个成员
let set = new Set()
set.add(0).add(1).add(1).add(2);
set.size//3
set.has(1) //true
set.has(5) //false
set.delete(1);
set.has(1) // false
set.clear();

Array.from 方法可以将Set结构转为数组。

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

遍历操作

let set = new Set(['red', 'green', 'blue']);

for (let item of set.keys()) {
  console.log(item);
}
// red
// green
// blue

for (let item of set.values()) {
  console.log(item);
}
// red
// green
// blue

for (let item of set.entries()) {
  console.log(item);
}
// ["red", "red"]
// ["green", "green"]
// ["blue", "blue"]

set.forEach((value, key) => console.log(key + ' : ' + value))
//red : red
//green : green
//blue : blue
点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
10个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
CuterCorley CuterCorley
4年前
商业数据分析从入门到入职(7)Python基础数据结构及其操作
一、列表之前的数据类型一般都是单个值,而不能再存储像矩阵、数组这种结构存储多个元素,要是需要达到这样的目标、需要使用新的数据类型,Python中提供了4种数据结构来存储多个对象,称它们为容器类型(ContainerTypes),包括如下几种类型:列表List元组Tuple字典Dictionary集合Set1.创建列表其实,
Stella981 Stella981
4年前
Set针对复杂对象去重问题
Set针对复杂对象去重问题​在项目中我们经常使用set,因其可以去重特性,平时使用较多的是基础数据类型,Set<Integer,Set<Long等,这些在使用中都没碰到什么问题。最近在项目中碰到自定义对象去重,用后创建的对象去覆盖set中type相同的对象,于是想到Set这个集合类型,并且重写了自定义对象的equals()和hashC
Easter79 Easter79
4年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
4年前
oracle游标的例子
declare    cursor ca is select id_no, name from user where ym201401;begin    for cb in ca loop        update path set enamecb.name where id_nocb.id
Wesley13 Wesley13
4年前
Java 集合系列
HashSet介绍HashSet是一个没有重复元素的集合。它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用null元素。HashSet是非同步的。如果多个线程同时访问一个哈希set,而其中至少一个线程修改了该set,那么它必须保持外部同步。HashSet数据结构java.lang
Wesley13 Wesley13
4年前
(翻译)Java SE 8 Lambda 标准库概览(下)
JavaSE8Lambda标准库概览8,Collectors    在目前的例子中,我们已经使用了collect()方法来收集流中的元素并放入List或Set中了。collec()方法的参数是一个收集器,它包含了收集或汇总多个元素到一个数据结构中的概念。Collector
Wesley13 Wesley13
4年前
Java容器——Set和顺序存储
  当Set使用自己创建的类型时,存储的顺序如何维护,在不同的Set实现中会有不同,而且它们对于在特定的Set中放置的元素类型也有不同的要求:Set(interface)存入Set的每个元素都必须是唯一的,因为Set不保存重复元素。加入Set的元素必须定义equals()方法以确保对象的唯一性。Set和Collection具有完全一样的接口,但S
菜园前端 菜园前端
2年前
什么是集合?
原文链接:什么是集合?集合是一种无序且唯一的数据结构,其中的唯一是指集合中的元素。在ES6中新增了一种数据结构Set就是集合。实现功能new()实例化一个集合add()添加元素delete()删除元素has()判断是否存在元素size()获取集合大小应用场
菜园前端 菜园前端
2年前
什么是字典?
原文链接:什么是字典?与集合类似,字典也是一种存储唯一值的数据结构,但它是以键值对的形式来存储。在ES6中新增了Map字典。实现功能delete删除元素clear清空所有元素set添加/覆盖元素get查找/返回元素的值has判断是否包含某个元素应用场景1.