A map in which more than one value may be stored under each key.

Usage no npm install needed!

<script type="module">
  import githubMultimap from 'https://cdn.skypack.dev/@github/multimap';



The multimap data structure is a map in which more than one value may be stored under each key.


$ npm install @github/multimap


import MultiMap from '@github/multimap'
const map = new MultiMap<string, number>()
map.set('a', 1)
map.set('a', 2)
map.get('a') // => Set([1, 2])
map.has('a') // => true
map.size // => 1


  • MultiMap() - Create an empty map.
  • MultiMap(iterable) - Create a map with values from an iterable yielding key value pairs: new MultiMap([['k', 1], ['k', 2]])


  • get(key) - Retrieve the Set of values stored under a key or the empty Set if the key does not exist.
  • set(key, value) - Add a value to the key's set without removing previous values. Returns the map so set can be chained.
  • has(key) - Returns true if a value is stored under the key.
  • delete(key) - Remove key and all of key's values. Returns true if the key existed.
  • delete(key, value) - Remove a value from the key's set. Returns true if the key and value existed.
  • drain(value) - Remove a value from all keys that reference it. Returns an array of keys removed.
  • clear() - Remove all keys and values to empty the map.
  • keys() - An iterator of map keys.
  • values() - An iterator of Sets of values for all keys.
  • entries() - An iterator of [key, Set] pairs.


  • size - The number of keys in the map.


npm install
npm test


Distributed under the MIT license. See LICENSE for details.