intset v0.0.2
IntSet.js
This library allows for an "efficient" storage mechanism for positive BigInt values in
JavaScript. It allows for basic set-theoretic operations, like union and intersection as well.
Usage
You can create a new set pretty easily:
const IntSet = require('intset');
let set = new IntSet();You can add elements to a set straightforward as well:
set.add(5n);And remove them the same:
set.remove(5n);Check for presence:
const is5inSet = set.contains(5n);Or see if it's empty:
const isSetEmpty = set.isEmpty();You can also do typical set operations on them as well:
const set6 = set1
.union(set2)
.intersection(set3)
.symmetricDifference(set4)
.difference(set5);Implementation
Internally, the set is a series of BigInt's, where each one uses bit masking to determine the
presence or lack thereof of other numbers. This allows a set that represents n numbers to
actually take up n / m numbers of space, where m represents the amount of storage used
per number. m defaults to 64 bits, as this has (through experimentation) seemed to be
the fastest, but can be customized through an argument to new IntSet(customM).
This means that unions, intersections, and the like are implemented through bitwise operators on each masked number, rather than storing each number individually.
Contributing
Just make an issue, or file a pull request!