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'
set([1, 2, 3]).contains(2)
set([1, 2, 3]).contains(4)
set([1, 2, 3]).add(4)
set([1, 2, 3]).remove(2)
set([1, 2, 3]).union([4, 5, 6])
set([1, 2, 3]).union([3, 4, 5])
set([1, 2, 3]).intersection([4, 5, 6])
set([1, 2, 3]).intersection([3, 4, 5])
set([1, 2, 3]).minus([1, 3])
set.fromArray([1, 2, 3, 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])
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.