Set.prototype.difference()

基线 2024

新可用

2024 年 6 月起,此功能在最新的设备和浏览器版本中均可使用。此功能可能在较旧的设备或浏览器中无法使用。

difference()Set 实例的一种方法,它接收一个集合并返回一个新集合,该新集合包含此集合中但在给定集合中不存在的元素。

语法

js
difference(other)

参数

other

一个 Set 对象,或 类似集合 的对象。

返回值

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

描述

在数学符号中,差集定义为

A B = { x A x B } 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() 接受 类似集合 的对象作为 other 参数。它要求 this 为一个实际的 Set 实例,因为它直接检索存储在 this 中的基础数据,而不会调用任何用户代码。然后,它的行为取决于 thisother 的大小。

  • 如果 this 中的元素多于 other.size,则它通过调用其 keys() 方法迭代 other,并使用 this 中所有未在 other 中看到的元素构造一个新集合。
  • 否则,它迭代 this 中的元素,并使用 this 中所有导致 other.has(e) 返回 假值 的元素 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 }

规范

规范
Set 方法
# sec-set.prototype.difference

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅