Set.prototype.difference()

Baseline 2024
新推出

自 2024 年 6 月起,此功能已在最新的设备和浏览器版本中可用。此功能可能不适用于较旧的设备或浏览器。

difference() 方法是 Set 实例的一个方法,它接收一个集合作为参数,并返回一个新集合,其中包含当前集合中存在但不在给定集合中的元素。

语法

js
difference(other)

参数

其他

一个 Set 对象,或 类 Set 对象

返回值

一个包含当前集合中存在但不在 other 集合中的元素的新 Set 对象。

描述

在数学表示法中,差集 定义为

AB={xAxB}A\setminus B = \{x\in A\mid x\notin B\}

使用维恩图表示:

A Venn diagram where two circles overlap. The difference of A and B is the part of A that is not overlapping B.

difference() 方法接受 类集合(set-like) 对象作为 other 参数。它要求 this 是一个实际的 Set 实例,因为它直接检索 this 中存储的底层数据,而不调用任何用户代码。然后,其行为取决于 thisother 的大小。

  • 如果 this 中的元素多于 other.size,则它通过调用 keys() 方法迭代 other,并使用 this 中所有未在 other 中出现的元素构造一个新集合。
  • 否则,它会迭代 this 中的元素,并使用 this 中所有导致 other.has(e) 返回 假值(falsy) 的元素 e 来构造一个新集合。

返回集合中元素的顺序与 this 中一致。

示例

使用 difference()

以下示例计算小于 10 的奇数集合与小于 10 的完全平方数集合的差集。结果是那些不是完全平方数的奇数集合。

js
const odds = new Set([1, 3, 5, 7, 9]);
const squares = new Set([1, 4, 9]);
console.log(odds.difference(squares)); // Set(3) { 3, 5, 7 }

规范

规范
ECMAScript® 2026 语言规范
# sec-set.prototype.difference

浏览器兼容性

另见