arraysetjs
v1.0.14
Published
A dependency-free library for treating arrays like sets and performing [set operations](<https://en.wikipedia.org/wiki/Set_(mathematics)#Basic_operations>) with an intuitive interface.
Downloads
19
Readme
arrayset
A dependency-free library for treating arrays like sets and performing set operations with an intuitive interface.
This library also includes a mutable version (ideal for use with Automerge or Immer).
Notes
- arrayset is now an ESM-only library; if you need CommonJS, use version 1.0.11 (versions 1.0.12 and 1.0.13 are broken). No, you won't have TypeScript types, but...you should really be using ESM!
- arrayset will not itself introduce duplicates with any of its operations; however, it will not police the arrays you provide to remove duplicates.
- arrayset does not guarantee the order of elements after set operations.
- arrayset does not check arguments; make sure you're using it correctly!
- arrayset supports providing comparison functions for use with objects, but this has not been tested or documented.
Normal (immutable) usage
import set from 'arraysetjs'
// existence:
set([1, 2, 3]).contains(2) // true
set([1, 2, 3]).contains(4) // false
// add/remove elements:
set([1, 2, 3]).add(4) // [1, 2, 3, 4]
set([1, 2, 3]).remove(2) // [1, 3]
// union:
set([1, 2, 3]).union([4, 5, 6]) // [1, 2, 3, 4, 5, 6]
set([1, 2, 3]).union([3, 4, 5]) // [1, 2, 3, 4, 5]
// intersection:
set([1, 2, 3]).intersection([4, 5, 6]) // []
set([1, 2, 3]).intersection([3, 4, 5]) // [3]
// difference:
set([1, 2, 3]).minus([1, 3]) // [2]
// create an arrayset instance:
set.fromArray([1, 2, 3, 2, 3]) // [1, 2, 3]
Mutable usage
The interface for mutable usage is exactly the same except the source array is modified. For example:
import set from 'arraysetjs'
const a = [1, 2, 3]
set.mutable(a).union([3, 4]) // a is now [1, 2, 3, 4]
// (which is also returned)
Contributing
This is a small library without a lot of activity, so generally I'll accept any reasonable enhancements. If there are big changes you would like to see, please raise an issue first to discuss.
- Fork repository
- Make code changes & write tests (in _src__tests___)
- Make sure all tests pass (
pnpm test
) - Make sure build is successful (
pnpm build
) - Update README.md with documentation (if necessary)
Do not update CHANGELOG.md; the maintainer will do that with version releases.