Set.prototype.isDisjointFrom()

Baseline 2024
新推出

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

isDisjointFrom() 方法用于判断一个 Set 实例与另一个集合是否没有共同的元素。它接受一个集合作为参数,并返回一个布尔值,指示该集合是否与给定的集合没有任何共同元素。

语法

js
isDisjointFrom(other)

参数

其他

一个 Set 对象,或 类 Set 对象

返回值

如果此集合与 other 集合没有任何共同元素,则返回 true;否则返回 false

描述

如果两个集合没有任何共同元素,则称它们是不相交的。在数学表示法中:

A 不相交于 BAB=A\text{ 与 }B \text{ 不相交} \Leftrightarrow A\cap B = \empty

使用维恩图表示:

A Venn diagram with two circles. A and B are disjoint because the circles have no region of overlap.

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

  • 如果 this 中的元素比 other.size 多,那么它将通过调用 otherkeys() 方法来迭代 other,如果 other 中的任何元素存在于 this 中,它将返回 false(并通过调用其 return() 方法来关闭 keys() 迭代器)。否则,它将返回 true
  • 否则,它将迭代 this 中的元素,如果 this 中的任何元素 e 导致 other.has(e) 返回一个 真值,则返回 false。否则,它将返回 true

由于这种实现方式,isDisjointFrom() 的效率主要取决于 thisother 中较小集合的大小(假设集合可以以亚线性时间访问)。

示例

使用 isDisjointFrom()

小于 20 的完全平方数集合与小于 20 的素数集合是不相交的,因为完全平方数根据定义可以分解为两个整数的乘积,而 1 也不被认为是素数。

js
const primes = new Set([2, 3, 5, 7, 11, 13, 17, 19]);
const squares = new Set([1, 4, 9, 16]);
console.log(primes.isDisjointFrom(squares)); // true

小于 20 的完全平方数集合与小于 20 的合数集合不是不相交的,因为所有大于 1 的完全平方数根据定义都是合数。

js
const composites = new Set([4, 6, 8, 9, 10, 12, 14, 15, 16, 18]);
const squares = new Set([1, 4, 9, 16]);
console.log(composites.isDisjointFrom(squares)); // false

规范

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

浏览器兼容性

另见