set-operations
🧮 Common set operations (union, difference, isSubset, etc.) for any Iterable
Provides helpers like isSuperset
, difference
, etc. for Iterables.
Install
Using Yarn:
$ yarn add @blakek/set-operations
…or using [npm]:
$ npm i --save @blakek/set-operations
API
import {
difference,
filter,
intersection,
isSubset,
isSuperset,
symmetricDifference,
union
} from '@blakek/set-operations';
difference();
difference
function difference<T>(groupA: Iterable<T>, groupB: Iterable<T>): Iterable<T>;
Returns values in one group not in another:
import { difference } from '@blakek/set-operations';
difference(['a', 'b', 'c'], ['b', 'a']);
filter
function filter<T>(group: Set<T>, fn: (value: T) => boolean): Set<T>;
Returns a new Set from all elements in a group matching a filtering function:
import { filter } from '@blakek/set-operations';
filter(new Set([1, 2, 3, 4, 5]), x => x < 4);
intersection
function intersection<T>(groupA: Iterable<T>, groupB: Iterable<T>): Iterable<T>;
Returns only values shared between groups:
import { intersection } from '@blakek/set-operations';
intersection([4, 5, 6], [5, 6]);
intersection('showers', 'flowers');
isSubset
function isSubset<T>(groupA: Iterable<T>, groupB: Iterable<T>): boolean;
Returns if the first group is a subset of the second:
import { isSubset } from '@blakek/set-operations';
isSubset([4, 5, 6], [5, 6]);
isSubset([2, 4, 6], [1, 2, 3, 4, 5, 6]);
isSubset('fame', 'frame');
isSuperset
function isSuperset<T>(groupA: Iterable<T>, groupB: Iterable<T>): boolean;
Returns if the first group is a superset of the second:
import { isSuperset } from '@blakek/set-operations';
isSuperset([4, 5, 6], [5, 6]);
isSuperset([2, 4, 6], [1, 2, 3, 4, 5, 6]);
isSuperset('fame', 'frame');
symmetricDifference
function symmetricDifference<T>(
groupA: Iterable<T>,
groupB: Iterable<T>
): Iterable<T>;
Returns values in either group not in both:
import { symmetricDifference } from '@blakek/set-operations';
symmetricDifference([2, 4, 6], [1, 2, 3, 4, 5, 6]);
symmetricDifference('shower', 'flower');
union
function union<T>(groupA: Iterable<T>, groupB: Iterable<T>): Iterable<T>;
Returns all values from each group:
import { union } from '@blakek/set-operations';
union([2, 4, 6], [1, 2, 3, 4, 5, 6]);
union('fun', 'sun');
Contributing
Node.js and Yarn are required to work with this project.
To install all dependencies, run:
yarn
Then, you can start the test server to get started:
yarn test --watch
See below for other scripts.
Useful Commands
yarn build | Builds the project to ./dist |
yarn format | Format the source following the Prettier styles |
yarn test | Run project tests |
yarn test --watch | Run project tests, watching for file changes |
License
MIT