@viarationis/bidirectional-map

1.0.1 • Public • Published

Bidirectional Map

This module provides BidirectionalMap, StrictBidirectionalMap, and SilentBidirectionalMap classes which extend the built-in JavaScript Map to additionally allow accessing keys from their values.

  • BidirectionalMap links keys and values in both directions. Looking up by key returns the value, looking up by value returns the key.
  • Values stay unique - assigning an existing value to a new key will delete the old key.
  • StrictBidirectionalMap instead throws an error if you try to assign an existing value to a new key.
  • SilentBidirectionalMap will instead ignore/no-op if you try to assign an existing value to a new key.

Installation

NPM Version

npm install @viarationis/bidirectional-map

Usage

import BidirectionalMap from '@viarationis/bidirectional-map';

const map = new BidirectionalMap();

map.set('key1', 'value1');
map.has('key1'); // true
map.hasValue('value1'); // true
map.get('key1'); // 'value1' 
map.getKey('value1'); // 'key1'

map.set('key2', 'value1'); // Deletes 'key1' and remaps 'value1' to 'key2'
map.deleteValue('value1'); // Deleted 'key2' and the map is now empty

import { StrictBidirectionalMap, SilentBidirectionalMap } from '@viarationis/bidirectional-map';

const mapStrict = new StrictBidirectionalMap();
mapStrict.set('key1', 'value1');
mapStrict.set('key2', 'value1'); // Throws error: "Cannot set duplicate value on StrictBidirectionalMap: value1"

const mapSilent = new SilentBidirectionalMap();
mapSilent.set('key1', 'value1');
mapSilent.set('key2', 'value1'); // Does nothing, 'value1' is still mapped to 'key1'

API

The maps provide the following methods in addition to the standard Map API:

  • getKey(value) - Get the key for a value
  • hasValue(value) - Check if the map contains a value
  • deleteValue(value) - Delete a value and its key

To help avoid ambiguity, these aliases of standard Map methods are also provided:

  • getValue(key) - Alias of get(key)
  • hasKey(key) - Alias of has(key)
  • deleteKey(key) - Alias of delete(key)

License

Released under the CC0-1.0 License.

Package Sidebar

Install

npm i @viarationis/bidirectional-map

Weekly Downloads

2

Version

1.0.1

License

CC0-1.0

Unpacked Size

7.89 kB

Total Files

4

Last publish

Collaborators

  • viarationis