Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

many-keys-map

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

many-keys-map

A `Map` subclass with support for multiple keys for one entry.

  • 2.0.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
6.3K
increased by9.33%
Maintainers
1
Weekly downloads
 
Created
Source

many-keys-map (size)

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.

const regularMap = new Map();
regularMap.set('hello', true);

const manyKeysMap = new ManyKeysMap();
manyKeysMap.set(['hello', 'world'], true);

This is useful when the keys cannot be easily combined (i.e. object)

const handlers = new ManyKeysMap();
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 above
handlers.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.

import ManyKeysMap from 'many-keys-map';

const groups = new ManyKeysMap();
groups.set([header, 'admin'], true);
groups.set([target, 'tools'], [1, 'any value is supported']);

const data = new ManyKeysMap([
	[['hello key'], 'value'],
	[[42, null], new Date()]
]);

data.get(['hello key']);
// => 'value'

data.get([42, null]);
// => date Object

data.get(['42']);
// => undefined

data.has([Symbol()]);
// => false

for (const [keys, value] of data) {
	console.log(keys);
	console.log(value);
}
// => ['hello key']
// => 'value'
// => [42, null]
// => date Object

Allowed keys

  1. Keys must always be an array, e.g. .set([a, b], 'hello')
  2. 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.
  3. ManyKeysMap supports any number of keys, any of these are valid and different: .get([a]) and .get([a, b, c, d, e, f, g])
  4. The order of keys matters, so .get([a, b]) is different from .get([b, a])
  5. The keys can be anything supported by Map.

Keywords

FAQs

Package last updated on 17 Mar 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc