@actualwave/map-of-sets
v0.0.3
Published
Storage based on Map that may hold more than one unique value per key using Set's.
Readme
Map of Sets
Simple data storage that holds multiple unique values per key — a Map<K, Set<V>> with a convenient API.
Map {
[key1]: Set[value1, value2, value3],
[key2]: Set[value1, value2, value3],
[key3]: Set[value1, value2, value3],
}Installation
npm install @actualwave/map-of-setsUsage
import MapOfSets, { createMapOfSets } from '@actualwave/map-of-sets';
const sets = new MapOfSets<string, string>();
sets.add('key', 'value 1');
sets.add('key', 'value 2');
sets.add('key', 'value 3');
sets.add('key', 'value 2'); // duplicate — ignored
console.log(sets.get('key')); // Set { 'value 1', 'value 2', 'value 3' }
console.log(sets.list('key')); // ['value 1', 'value 2', 'value 3']API
| Method | Description |
|---|---|
| has(key) | Returns true if the key exists and its Set is non-empty |
| hasValue(key, value) | Returns true if the value exists under the key |
| get(key) | Returns the Set for the key, or undefined |
| list(key) | Returns an array of values for the key, or [] |
| forEach(callback) | Calls callback(value, key, map) for every value of every key |
| eachValue(key, callback) | Calls callback(value, key, map) for every value of the given key |
| add(key, value) | Adds a value to the key's Set (creates the Set if needed) |
| set(key, values) | Replaces all values for the key with a Set or array; removes the key if empty |
| remove(key) | Removes the key and all its values |
| removeValue(key, value) | Removes a single value; removes the key if the Set becomes empty |
| clone() | Returns a deep copy of the map |
