more-maps
TypeScript icon, indicating that this package has built-in type declarations

2.1.0 • Public • Published

More Maps

A collection of additional map-like data structures. Including a bidirectional map, a multi map, and a bidirectional multi map.

Installation

 $ npm i more-maps

Usage

BidirectionalMap

A map that allows bidirectional lookup between keys and values. It extends the built-in Map class.

import { BidirectionalMap } from "more-maps"

const map = new BidirectionalMap<string, number>()

map.set("one", 1)
map.set("two", 2)

console.log(map.get("one")) // 1
console.log(map.reverse.get(2)) // "two"

console.log(map.reverse.reverse === map) // true

Be aware that if you set the same value twice to a different key, the second key will overwrite the first one in the reverse map. So make sure they do not conflict. If you want to avoid this, use the BidirectionalMultiMap.

MultiMap

A map that allows multiple values per key. It stores the values in an array. It provides methods to add, retrieve, and delete values.

import { MultiMap } from "more-maps"

const map = new MultiMap<string, number>()

map.add("one", 1)
map.add("one", 2)
map.add("one", 3)
map.add("two", 4)

console.log(map.getAll("one")) // [1, 2, 3]
console.log(map.get("one")) // 1
console.log(map.get("two")) // 4

map.delete("one", 2)
console.log(map.getAll("one")) // [1, 3]

map.delete("one")
console.log(map.getAll("one")) // []
console.log(map.get("one")) // undefined

BidirectionalMultiMap

A bidirectional version of the MultiMap. It allows bidirectional lookup between keys and values, and also supports adding and deleting values.

import { BidirectionalMultiMap } from "more-maps"

const map = new BidirectionalMultiMap<string, number>()

map.add("one", 1)
map.add("one", 2)
map.add("two", 3)
map.add("three", 2)

console.log(map.getAll("one")) // [1, 2]
console.log(map.reverse.getAll(2)) // ["one", "three"]

map.delete("one", 2)
console.log(map.getAll("one")) // [1]
console.log(map.reverse.getAll(2)) // ["three"]

Contribute

All feedback is appreciated. Create a pull request or write an issue.

/more-maps/

    Package Sidebar

    Install

    npm i more-maps

    Weekly Downloads

    21

    Version

    2.1.0

    License

    ISC

    Unpacked Size

    17 kB

    Total Files

    6

    Last publish

    Collaborators

    • zzrv