Set.prototype.isDisjointFrom()

基线 2024

新推出

2024 年 6 月起,此功能在所有最新的设备和浏览器版本上都能正常运行。此功能可能在较旧的设备或浏览器中无法正常工作。

isDisjointFrom()Set 实例的方法,它接受一个集合并返回一个布尔值,指示该集合是否与给定集合没有共同的元素。

语法

js
isDisjointFrom(other)

参数

other

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

返回值

如果该集合与 other 集合没有共同的元素,则返回 true,否则返回 false

描述

如果两个集合没有共同的元素,则它们是不相交的。用数学符号表示

A  与  B 不相交 A B =

A\text{ 与 }B 不相交 \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() 接受 类似集合 的对象作为 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()

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

规范

完全平方数的集合(<20)与合数的集合(<20)不相交,因为所有非 1 完全平方数根据定义都是合数
规范
# 集合方法

浏览器兼容性

sec-set.prototype.isdisjointfrom

另请参阅