清淨
  • Java

    • Java 基础
  • 框架

    • Flyway
    • MapStruct
    • Spring Cloud
  • 中间件

    • Elasticsearch
    • Redis
    • RabbitMQ
    • Kafka
  • 三剑客

    • HTML
    • CSS
    • JavaScript
  • 进阶

    • jQuery
    • ECMAScript6
    • TypeScript
  • Vue

    • Vue2
    • Vue3
    • VuePress
  • Linux
  • Jenkins
  • Maven
  • MySQL
  • 插件工具
  • 代码集成
  • 其它

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • 设计模式
迁移日志
订阅号
微信订阅号
微信订阅号
GitHub
  • Java

    • Java 基础
  • 框架

    • Flyway
    • MapStruct
    • Spring Cloud
  • 中间件

    • Elasticsearch
    • Redis
    • RabbitMQ
    • Kafka
  • 三剑客

    • HTML
    • CSS
    • JavaScript
  • 进阶

    • jQuery
    • ECMAScript6
    • TypeScript
  • Vue

    • Vue2
    • Vue3
    • VuePress
  • Linux
  • Jenkins
  • Maven
  • MySQL
  • 插件工具
  • 代码集成
  • 其它

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • 设计模式
迁移日志
订阅号
微信订阅号
微信订阅号
GitHub
  • ECMAScript6

    • 简介
    • let
    • const
    • 解构赋值
    • 对象简写
    • 箭头函数
    • 参数默认值
    • 剩余参数
    • 可选链操作符
    • 空值合并运算符
    • 逻辑空赋值
    • 模板字符串
    • 扩展运算符 (展开语法)
    • Array 扩展
    • String 扩展
    • Number 扩展
    • Object 扩展
    • 迭代器
    • 生成器
    • BigInt
    • Set
    • Map
    • class
    • 模块化
    • globalThis
    • Promise
    • async-await

Set

ES6 引入了 Set 数据结构,它是一种无序且唯一的集合。与数组不同,Set 中的元素不能重复,这使得它非常适合用于去重操作。

let set = new Set()
set.add(1).add(2).add(3).add(1)
console.log(set)

在创建 set 时,可以传递一个数组 (数组会被去重) 。

let set = new Set([1, 2, 3, 1])
console.log(set)

当然,我们可以借助 Set 的特性来实现数组去重。如下:

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

常用方法如下:

  • add()

    添加元素,返回 Set 本身 (可链式调用) 。

  • delete()

    删除某个元素,返回 boolean。

  • has()

    是否存在某个元素,返回 boolean。

  • clear()

    清空所有元素,无返回值。

  • size()

    返回元素个数。

  • forEach()

    遍历集合,无返回值。

  • 求交集

    let arr1 = [1,2,3,5,3,2,6]
    let arr2 = [1,2,8,9,6,8]
    // let result = [...new Set(arr1)].filter(ele => [...new Set(arr2)].includes(ele))
    let result = [...new Set(arr1)].filter(ele => newSet(arr2).has(ele))
    console.log(result)
    
  • 求并集

    let arr1 = [1,2,3,5,3,2,6]
    let arr2 = [1,2,8,9,6,8]
    let result = new Set([...arr1, ...arr2])
    console.log(result)
    
  • 求差集

    let arr1 = [1,2,3,5,3,2,6]
    let arr2 = [1,2,8,9,6,8]
    // arr1 - arr2
    let result = [...new Set(arr1)].filter(e => !(new Set(arr2).has(e)))
    console.log(result)
    
想要编辑此页?
上次更新: 2025/6/5 23:39
贡献者: Junfeng Dai
←BigIntMap→
[ 纸上得来终觉浅绝知此事要躬行 ]
Copyright © 2021-present Junfeng Dai
蜀ICP备2021009537号