博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES6 set数据结构 学习记录
阅读量:6267 次
发布时间:2019-06-22

本文共 2239 字,大约阅读时间需要 7 分钟。

引用:https://www.cnblogs.com/kongxianghai/p/7250248.html

 

特性

似于数组,但它的一大特性就是所有元素都是唯一的,没有重复。

我们可以利用这一唯一特性进行数组的去重工作。

单一数组的去重。

let set6 = new Set([1, 2, 2, 3, 4, 3, 5])console.log('distinct 1:', set6)

结果:

distinct 1: Set { 1, 2, 3, 4, 5 }

 

多数组的合并去重

let arr1 = [1, 2, 3, 4]let arr2 = [2, 3, 4, 5, 6]let set7 = new Set([...arr1, ...arr2])console.log('distinct 2:', set7)

结果:

distinct 2: Set { 1, 2, 3, 4, 5, 6 }

 

操作

1.向Set中添加元素。

let set1 = new Set()set1.add(1)set1.add(2)set1.add(3)console.log('added:', set1)

结果:

added: Set { 1, 2, 3 }

 

2.从Set中删除元素。

let set1 = new Set()set1.add(1)set1.add(2)set1.add(3)set1.delete(1) console.log('deleted:', set1)

结果:

deleted: Set { 2, 3 }

 

3.判断某元素是否存在。

let set1 = new Set()set1.add(1)set1.add(2)set1.add(3)set1.delete(1) console.log('has(1):', set1.has(1)) console.log('has(2):', set1.has(2))

结果:

has(1): falsehas(2): true

 

4.清除所有元素。

let set1 = new Set()set1.add(1)set1.add(2)set1.add(3)set1.clear()console.log('cleared:', set1)

结果:

cleared: Set {}

 

Set和Array互转

1.数组转Set

let set2 = new Set([4,5,6])console.log('array to set 1:', set2)let set3 = new Set(new Array(7, 8, 9)) console.log('array to set 2:', set3)

结果:

array to set 2: Set { 4, 5, 6 }array to set 3: Set { 7, 8, 9 }

 

2.Set转数组

let set4 = new Set([4, 5, 6])console.log('set to array 1:', [...set4])console.log('set to array 2:', Array.from(set4))

结果:

set to array 1: [ 4, 5, 6 ]set to array 2: [ 4, 5, 6 ]

 

遍历

可以使用Set实例对象的keys(),values(),entries()方法进行遍历。

由于Set的键名和键值是同一个值,它的每一个元素的key和value是相同的,所有keys()和values()的返回值是相同的,entries()返回的元素中的key和value是相同的。

let set5 = new Set([4, 5, 'hello'])console.log('iterate useing Set.keys()')for(let item of set5.keys()) {  console.log(item)}console.log('iterate useing Set.values()') for(let item of set5.values()) { console.log(item) } console.log('iterate useing Set.entries()') for(let item of set5.entries()) { console.log(item) }

结果:

iterate useing Set.keys()45hello iterate useing Set.values()45hello iterate useing Set.entries()[ 4, 4 ] [ 5, 5 ] [ 'hello', 'hello' ]

 

其他特性

在向Set加入值时,Set不会转换数据类型,内部在判断元素是否存在时用的类似于精确等于(===)的方法,“2”和2是不同的,NaN等于其自身。

let set8 = new Set()set8.add(NaN)set8.add(NaN)console.log('NaN===Nan is true:', set8)

结果:

NaN===Nan is true: Set { NaN }

转载于:https://www.cnblogs.com/xiaoyuchen/p/10575142.html

你可能感兴趣的文章
【★★★★★】提高PHP代码质量的36个技巧
查看>>
3 weekend110的配置hadoop(格式化) + 一些问题解决 + 未免密码配置
查看>>
JavaScript Creating 对象
查看>>
Java compiler level does not match the version of the installed Java project facet.(转)
查看>>
WPF MediaElement.Position属性
查看>>
sqoop数据迁移(基于Hadoop和关系数据库服务器之间传送数据)
查看>>
spring mysql多数据源配置
查看>>
[React] Override webpack config for create-react-app without ejection
查看>>
检索 COM 类工厂中 CLSID 为{00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。...
查看>>
测试java的父子类化
查看>>
HDOJ 1008
查看>>
安装thrift出现的一些问题
查看>>
makefile编写---单个子目录编译模板
查看>>
Oracle DB_LINK如何使用
查看>>
cv resource
查看>>
关于加快INSERT语句执行速度和HINT /*+ append */及/*+ append nologging */的使用
查看>>
JDK源代码学习系列07----Stack
查看>>
firefox
查看>>
PS批处理的使用
查看>>
七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 【转】
查看>>