A tiny (~400 bytes gzipped) implementation of a bidirectional map in JavaScript. It can be used interchangeably with the JavaScript Map
as Bimap
implements its whole interface while also providing new methods. Note that Bimap
requires a bijective relation between the keys and values, unlike a normal map.
Warning: Although Bimap
instances are assignable to the Map
ones, Bimap
does NOT inherit from the Map
.
Via npm
:
$ npm i simple-bimap --save
Via yarn
:
$ yarn add simple-bimap
import { Bimap } from "simple-bimap";
Apart from all the properties from the Map
, the Bimap
offers three extra methods:
Method | Description |
---|---|
Bimap<K, V>.prototype.getByValue(value: V): K | undefined |
Returns the key associated with the given value or undefined if it doesn't exist. |
Bimap<K, V>.prototype.hasValue(value: V): boolean |
Returns true if the given value is in the bimap and false otherwise. |
Bimap<K, V>.prototype.deleteByValue(value: V): boolean |
Deletes a bimap entry that has a value equal to the one given as the argument. Returns true if the deletion was successful and false otherwise. |
The time complexities of each of these methods are equal to the complexities of their corresponding key-oriented counterparts (get
/has
/delete
), so they should be sublinear.