@fasteroid/maps
v3.0.0
Published
Some extensions and variations of Map<K, V>
Downloads
238
Readme
@fasteroid/maps
A few variations of the vanilla Map<K, V> that might make your life easier.
Classes
AutoMap<K, V>
Populates empty keys when getting them, based on a function that receives the key in question.
💡⠀This package also provides "auto" variants for most of the classes below!
CollisionMap<K, V>
You tell it how to hash keys into primitives. Has two interesting use-cases:
- Indexing by unordered pairs—if you want
[1, 2]and[2, 1]to point at the same thing - Indexing by objects that feel primitive but aren't—eg. regexes
⚠️⠀DON'T use
JSON.stringifyfor your hash function. Hash functions need to be fast.
SemiWeakMap<K, V>
Like a native WeakMap, but you can store primitives on it.
WeakPairing<K, V>
Like a SemiWeakMap, but the values are also weakly held. Useful as a weak bidirectional lookup table.
Values referenced by a pair can be garbage-collected as long as at least one of them is garbage-collectable.
Ordering<T>
Stores the concept of an enumerable "order" for any set of values.
Has one method, apply(values: T[]), which sorts the values into an unspecified but consistent ordering within the scope of the ordering's lifetime.
⚠️⠀Objects are sorted by reference, not contents. Don't assume the same order between program executions.
TagMap<K, V>
Indexes items by unordered collections of keys rather than traditional single keys.
License
MIT License
