set-manipulator
v0.3.1
Published
Fast set operations for javascript arrays
Downloads
962
Readme
set-manipulator
ES6 set manipulation operations based on https://gist.github.com/jabney/d9d5c13ad7f871ddf03f
Set operations take two arrays and return the result of the operation as an array. Supported operations are union
, intersection
, difference
, complement
, and equals
. difference
is the symmetric difference and complement
is the relative complement. The set operations are fast, even for large arrays.
Installation
npm install set-manipulator
Usage
import {
union,
intersection,
difference,
complement,
equals,
} from 'set-manipulator';
const a = [1, 1, 2, 3, 3]; // [1, 2, 3]
const b = [3, 4, 4, 5, 5]; // [3, 4, 5]
// Join two sets together. A ∪ B
union(a, b); // => [1, 2, 3, 4, 5]
// The intersection of two sets. A ∩ B
intersection(a, b); // => [3]
// The symmetric difference of two sets. A Δ B
difference(a, b); // => [1, 2, 4, 5]
// The relative complement, or a minus b. A\B
complement(a, b); // => [1]
// Set equality. A = B
equals(a, b); // => false
equals(a, [1, 2, 3]); // => true
Using Objects
Arrays of objects can be used in set operations as long as they have some type of unique identifier. A custom identity extractor method can be specified as a third argument to any of the set manipulation functions.
import { union } from 'set-manipulator';
const a = [{ id: a, number: 1 }, { id: b, number: 2 }];
const b = [{ id: c, number: 5}];
// Join two sets together. A ∪ B
union(a, b, (object) => object.id); // => [{ id: a, number: 1 }, { id: b, number: 2 }, { id: c, number: 5 }];