Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

subset

clux6.8kMIT1.1.0

Generalized set operations and comparisons in the style of Haskell

compare, comparing, equality, union, intersect, nub, group, generalized, haskell, Data.List, Ord, ES6

readme

Subset

npm status build status dependency status coverage status

Subset provides basic and generalized set operations for JavaScript. They are inspired by a subset of the interface to Haskell's Data.List, but optimized for JavaScript semantics.

The new ES6 Set class is not particularly helpful for doing set operations on general objects (as their only version of equality is ===), and this module provides a general alternative for people who want to do the same-ish things on arrays.

Usage

Use it with qualified imports with the yet unfinished module import syntax or attach it to the short variable of choice. For selling points, here's how it will look with ES7 modules.

import { equality, union, unionBy, intersect, unique, uniqueBy, insert, delete, group } from 'autonomy'

intersect([1,2,3,4], [2,4,6,8]); // [ 2, 4 ]

union([1,3,5], [4,5,6]); // [ 1, 3, 5, 4, 6 ]
unionBy(equality('a'), [{ a: 1 }, { a: 3 }], [{ a: 2 }, { a: 3 }]);
// [ { a: 1 }, { a: 3 }, { a: 2 } ]

unique([1,3,2,4,1,2]); // [ 1, 3, 2, 4 ]

var notCoprime = (x, y) => gcd(x, y) > 1;
var primes = uniqueBy(notCoprime, [2,3,4,5,6,7,8,9,10,11,12]); // [ 2, 3, 5, 7, 11 ]

group([1,2,2,3,5,5,2]); // [ [1], [2,2], [3], [5,5], [2] ]

insert([1,2,3,4], 3); // [ 1, 2, 3, 3, 4 ]

delete([1,2,3,2,3], 2); // [ 1, 3, 2, 3 ]

Read the full API.

Note that it is often useful to get it with the larger utility library interlude for which it was made.

License

MIT-Licensed. See LICENSE file for details.

changelog

1.0.0 / 2016-01-27

  • Rewrite for ES6
  • indexOfBy added to exports
  • isSubsetOf now assumes inputs have no duplicates
  • isSubsetOf third boolean arg to check if proper subset no longer exists
  • isProperSubsetOf now exported - and assumes no duplicates
  • compare now split into compare and compareBy
  • comparing (variadic version of compare) removed
  • equality now only takes single argument
  • equalityBy added to exports
  • nub and nubBy renamed to unique and uniqueBy

0.1.7 / 2015-11-15

  • Added .npmignore

0.1.6 / 2014-09-02

  • Move coverage to tests area to avoid confusing browserify

0.1.5 / 2014-07-10

  • Documentation and test coverage maintenance release.

0.1.4 / 2013-04-26

  • Update package.json a little

0.1.3 / 2012-11-11

  • Code cleanups and better documentation

0.1.2 / 2012-10-24

  • Overload $.compare() to be able to take a cost function as well

0.1.1 / 2012-09-20

  • Add isSubsetOf function

0.1.0 / 2012-06-17

  • First proper version outside interlude