You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A Map subclass with support for multiple keys for one entry.
A ManyKeysMap object is identical to a regular Map, with the exception that it only supports a sequence of keys as key, instead of a single key. This will let you attach a value to a specific combination of keys, instead of a single key.
This is useful when the keys cannot be easily combined (i.e. object)
consthandlers=newManyKeysMap();handlers.set([element,'click'],onClickFn);handlers.set([element,'keypress',{passive: true}],onKeypressFn);// Since objects are stored by reference, it’s best to stringify `options` object like the abovehandlers.set([element,'keypress',JSON.stringify({passive: true})],onKeypressFn);
The number of keys allowed is unlimited and their order matters.
Install
$ npm install many-keys-map
Usage
It should work exactly the same as a Map, except that the key must always be an array.
importManyKeysMapfrom'many-keys-map';constgroups=newManyKeysMap();groups.set([header,'admin'],true);groups.set([target,'tools'],[1,'any value is supported']);constdata=newManyKeysMap([[['hello key'],'value'],[[42,null],newDate()]]);data.get(['hello key']);// => 'value'data.get([42,null]);// => date Objectdata.get(['42']);// => undefineddata.has([Symbol()]);// => falsefor(const[keys,value]ofdata){console.log(keys);console.log(value);}// => ['hello key']// => 'value'// => [42, null]// => date Object
Allowed keys
Keys must always be an array, e.g. .set([a, b], 'hello')
Only the values in the keys array are stored, not the array itself — so future changes to the array won’t be reflected in the map.
ManyKeysMap supports any number of keys, any of these are valid and different: .get([a]) and .get([a, b, c, d, e, f, g])
The order of keys matters, so .get([a, b]) is different from .get([b, a])
The keys can be anything supported by Map.
Related
many-keys-weakmap - A WeakMap subclass with support for multiple keys for one entry.
About
A Map subclass with support for multiple keys for one entry.