1.0.14 • Published 12 months ago

arraysetjs v1.0.14

Weekly downloads
41
License
(MIT OR GPL-3.0)
Repository
github
Last release
12 months 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 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.

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

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

1.0.14

12 months ago

1.0.13

1 year ago

1.0.11

4 years ago

1.0.12

4 years ago

1.0.10

5 years ago

1.0.9

5 years ago

1.0.8

7 years ago

1.0.7

7 years ago

1.0.6

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago