Multimap - Map which Allow Multiple Values for the same Key
Install
npm install multimap --save
Usage
If you'd like to use native version when it exists and fallback to polyfill if it doesn't, but without implementing Map
on global scope, do:
var Multimap = require('multimap');
var m = new Multimap();
If the global es6 Map
exists or Multimap.Map
is set, Multimap
will use the Map
as inner store, that means Object can be used as key.
var Multimap = require('multimap');
Multimap.Map = ShimMap;
var m = new Multimap();
var key = {};
m.set(key, 'one');
Otherwise, an object will be used, all the keys will be transformed into string.
In Modern Browser
Just download the index.js
as Multimap.js
.
<script src=Multimap.js"></script>
<script>
var map = new Multimap([['a', 1], ['b', 2], ['c', 3]]);
map = map.set('b', 20);
map.get('b'); // [2, 20]
</script>
Or use as an AMD loader:
require(['./Multimap.js'], function (Multimap) {
var map = new Multimap([['a', 1], ['b', 2], ['c', 3]]);
map = map.set('b', 20);
map.get('b'); // [2, 20]
});
- Browsers should support
Object.defineProperty
and Array.prototype.forEach
.
API
Following shows how to use Multimap
:
var Multimap = require('multimap');
var map = new Multimap([['a', 'one'], ['b', 1], ['a', 'two'], ['b', 2]]);
map.size;
map.count;
map.get('a');
map.get('b');
map.has('a');
map.has('foo');
map.has('a', 'one');
map.has('b', 3);
map.set('a', 'three');
map.size;
map.count;
map.get('a');
map.set('b', 3, 4);
map.size;
map.count;
map.delete('a', 'three');
map.delete('x');
map.delete('a', 'four');
map.delete('b');
map.size;
map.count;
map.set('b', 1, 2);
map.size;
map.count;
map.forEach(function (value, key) {
});
map.forEachEntry(function (entry, key) {
});
var keys = map.keys();
keys.next().value;
var values = map.values();
map.clear();
map.size;
map.count;
License
(The MIT License)
Copyright (c) 2013, Villa.Gao jky239@gmail.com;
All rights reserved.