UNPKG

2.58 kBMarkdownView Raw
1# Multimap - Map which Allow Multiple Values for the same Key
2
3## Install
4
5```bash
6npm install multimap --save
7```
8
9## Usage
10
11
12If 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:
13
14```javascript
15var Multimap = require('multimap');
16var m = new Multimap();
17```
18
19If 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.
20
21```javascript
22var Multimap = require('multimap');
23
24// if harmony is on
25/* nothing need to do */
26// or if you are using es6-shim
27Multimap.Map = ShimMap;
28
29var m = new Multimap();
30var key = {};
31m.set(key, 'one');
32
33```
34
35Otherwise, an object will be used, all the keys will be transformed into string.
36
37
38### Browser
39
40Just download the `index.js` as `Multimap.js`.
41
42```
43<script src=Multimap.js"></script>
44<script>
45var map = new Multimap([['a', 1], ['b', 2], ['c', 3]]);
46map = map.set('b', 20);
47map.get('b'); // [2, 20]
48</script>
49```
50
51Or use as an AMD loader:
52
53```
54require(['./Multimap.js'], function (Multimap) {
55 var map = new Multimap([['a', 1], ['b', 2], ['c', 3]]);
56 map = map.set('b', 20);
57 map.get('b'); // [2, 20]
58});
59```
60
61
62## API
63
64Following shows how to use `Multimap`:
65
66```javascript
67var Multimap = require('multimap');
68
69var map = new Multimap([['a', 'one'], ['b', 1], ['a', 'two'], ['b', 2]]);
70
71map.size; // 4
72
73map.get('a'); // ['one', 'two']
74map.get('b'); // [1, 2]
75
76map.has('a'); // true
77map.has('foo'); // false
78
79map.has('a', 'one'); // true
80map.has('b', 3); // false
81
82map.set('a', 'three');
83map.size; // 5
84map.get('a'); // ['one', 'two', 'three']
85
86map.set('b', 3, 4);
87map.size; // 7
88
89map.delete('a', 'three'); // true
90map.delete('x'); // false
91map.delete('a', 'four'); // false
92map.delete('b'); // true
93
94map.size; // 2
95
96map.set('b', 1, 2);
97map.size; // 4
98
99
100map.forEach(function (value, key) {
101 // iterates { 'a', 'one' }, { 'a', 'two' }, { 'b', 1 }, { 'b', 2 }
102});
103
104map.forEachEntry(function (entry, key) {
105 // iterates { 'a', ['one', 'two'] }, { 'b', [1, 2] }
106});
107
108
109var keys = map.keys(); // iterator with ['a', 'b']
110keys.next().value; // 'a'
111var values = map.values(); // iterator ['one', 'two', 1, 2]
112
113map.clear(); // undefined
114map.size; // 0
115```
116
117
118## License
119
120(The MIT License)
121
122Copyright (c) 2013, Villa.Gao <jky239@gmail.com>;
123All rights reserved.