ES6中的Set集合

Set集合

ES6 提供了新的数据结构Set(集合)。

它类似于数组,但成员的值都是唯一的集合实现了 iterator

接口,所以可以使用「扩展运算符」和[for...of...」进行遍历集合的属性和方法 集合的属性和方法:

1)size,返回集合的元素个数

2)add,增加一个新元素,返回当前集合

3)delete,删除元素,返回 boolean 值

4)has,检测集合中是否包含某个元素,返回boolean值

5)clear,清空集合

size

typescript 复制代码
let s = new Set()
let s2 = new Set(['大事儿', '小事儿', '好事儿', '坏事儿'])
const num = s2.size
console.log(num)   //  4

add

typescript 复制代码
let s = new Set()
let s2 = new Set(['大事儿', '小事儿', '好事儿', '坏事儿'])
s2.add('喜事儿')
console.log(s2)  

delete

typescript 复制代码
let s = new Set()
let s2 = new Set(['大事儿', '小事儿', '好事儿', '坏事儿'])
s2.delete('坏事儿')
console.log(s2)


has

typescript 复制代码
let s = new Set()
let s2 = new Set(['大事儿', '小事儿', '好事儿', '坏事儿'])
const isHas = s2.has('好事儿')
console.log(isHas)  // true

clear

typescript 复制代码
let s = new Set()
let s2 = new Set(['大事儿', '小事儿', '好事儿', '坏事儿'])
 s2.clear()
console.log(s2)  //  Set(0) {size: 0}

Set应用

typescript 复制代码
// 1.数组去重
const arr = [1, 2, 3, 4, 5, 3, 2, 1, 6]
const result1 = [...new Set(arr)]
console.log(result1)   //  [1, 2, 3, 4, 5, 6]
typescript 复制代码
  // 2.数组取交集
const arr = [1, 2, 3, 4, 5, 3, 2, 1, 6]
const arr2 = [4, 5, 6, 5, 6]
const result2 = [...new Set(arr)].filter(item => new Set(arr2).has(item))
console.log(result2)  // [4, 5, 6]
typescript 复制代码
// 3.数组并集
const arr = [1, 2, 3, 4, 5, 3, 2, 1, 6]
const arr2 = [4, 5, 6, 5, 6]
// 先合并arr和arr2,再去重转化为数组
const result3 = [...new Set([...arr, ...arr2])]
console.log(result3)   // [1, 2, 3, 4, 5, 6]
typescript 复制代码
// 4.数组差集
const arr = [1, 2, 3, 4, 5, 3, 2, 1, 6]
const arr2 = [4, 5, 6, 5, 6]
// arr里面的元素,arr2有哪些没有的
const result4 = [...new Set(arr)].filter(item => !(new Set(arr2).has(item)))
console.log(result4)  //   [1, 2, 3]
相关推荐
人邮异步社区3 分钟前
怎么把C语言学到精通?
c语言·开发语言
kyriewen28 分钟前
我让AI给前端项目做了一次完整的Code Review——它和人类的差距,比我想的大得多
前端·javascript·ai编程
心平气和量大福大36 分钟前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai1 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
এ慕ོ冬℘゜1 小时前
前端基础:什么是时间戳?JS获取时间戳三种方法与实战用途
开发语言·前端·javascript
执明wa1 小时前
LayoutInflater详解: XML是如何变成View的?
android·xml·开发语言·android studio
一次旅行1 小时前
Python+大模型端到端自动化日报系统
开发语言·python·自动化
sugar__salt2 小时前
Vue3 表单双向绑定与响应式核心 API 技术详解
前端·javascript·vue.js
噢,我明白了2 小时前
java中Excel的导入和导出(EasyExcel)
java·开发语言·excel
SmartBoyW2 小时前
CSS弹性布局(Flexbox)学习笔记:从零开始搞懂弹性布局
前端·javascript