1.0.13 • Published 1 month ago

arraysetjs v1.0.13

Weekly downloads
41
License
(MIT OR GPL-3.0)
Repository
github
Last release
1 month ago

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 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.

  1. Fork repository
  2. Make code changes & write tests (in _src__tests___)
  3. Make sure all tests pass (yarn test)
  4. Make sure build is successful (yarn build)
  5. Update README.md with documentation (if necessary)

Do not update CHANGELOG.md; the maintainer will do that with version releases.

1.0.13

1 month ago

1.0.11

3 years ago

1.0.12

3 years ago

1.0.10

4 years ago

1.0.9

4 years ago

1.0.8

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago