diff --git a/README.md b/README.md index a55dbae..6d6f212 100644 --- a/README.md +++ b/README.md @@ -218,3 +218,19 @@ const c = [1, 2, 3]; strictSuperset(a, b); // true strictSuperset(a, c); // false ``` + +### intersects + +```ts +declare const intersects: (a: Iterable, b: Iterable) => boolean; +``` + +Takes two iterables and returns true if the two intersect. + +```js +const a = [1, 2]; +const b = [2, 3]; +const c = [3, 4]; +intersects(a, b); // true +intersects(a, c); // false +``` diff --git a/index.ts b/index.ts index 8382cb1..0991475 100644 --- a/index.ts +++ b/index.ts @@ -41,6 +41,9 @@ const superset = (a: Iterable, b: Iterable): boolean => subset(b, a); const strictSuperset = (a: Iterable, b: Iterable): boolean => strictSubset(b, a); +const intersects = (a: Iterable, b: Iterable): boolean => + and(a, b).size > 0; + export { set, and, @@ -55,5 +58,6 @@ export { subset, strictSubset, superset, - strictSuperset + strictSuperset, + intersects }; diff --git a/test.ts b/test.ts index d68840c..d903824 100644 --- a/test.ts +++ b/test.ts @@ -13,7 +13,8 @@ import { subset, strictSubset, superset, - strictSuperset + strictSuperset, + intersects } from "./index"; assert.deepEqual(set(), new Set()); @@ -64,3 +65,6 @@ assert(strictSuperset([4, 3, 2, 1], [1, 2, 3])); assert(!strictSuperset([3, 2, 1], [1, 2, 3])); assert(!strictSuperset([2, 1], [1, 2, 3])); + +assert(intersects([1, 2], [2, 3])); +assert(!intersects([1, 2], [3, 4]));