0.1.3 • Published 26 days ago

extra-keys-map v0.1.3

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
26 days ago

extra-keys-map

Same as Map, but accepts an array of keys.

import Map from "extra-keys-map";

const map = new Map();

map.set(["key1", "key2"], 10);

map.get(["key1", "key2"]); // => 10

npm npm bundle size

Typescript example:

import Map from "extra-keys-map";

// for known number of keys
const map = new Map<[boolean, string], number>();

map.set([true, "str"], 10);

map.get([true, "str"]); // => 10

// for unknown number of keys
const map = new Map<any[], number>();

map.set([true, "str", null, 1, undefined], 10);

map.get([true, "str", null, 1, undefined]); // => 10

Features:

ExtraKeysMap extends the original Map class, so every method and property of Map will still work as expected.

use an object as key

const objRef = {};

map.set([objRef, "key2"], 123);

map.get([objRef, "key2"]); // => 123

spread operator

map.set([1, "2"], true);

map.set(["3", 4], null);

console.log(...map); // => [[[1, "2"], true], [["3",4], null]]

size

map.set([1, "2"], true);

map.set(["3", 4], null);

map.set([undefined, 6], 1);

map.set([{}], undefined);

console.log(map.size); // => 4

values

map.set([1, "2"], true);

map.set(["3", 4], undefined);

console.log([...map.values()]); // => [true, undefined]

keys

map.set([1, "2"], true);

map.set(["3", 4], undefined);

console.log([...map.keys()]); // => [[1, "2"], ["3", 4]]

entries

map.set([1, "2"], true);

map.set(["3", 4], null);

console.log([...map.entries()]); // => [[[1, "2"], true], [["3",4], null]]

has

const objRef = {};

map.set(["key1", "key2"], 123);

map.has(["key1", "key2"]); // => true

map.has(["key1"]); // => false

map.has(["key2"]); // => false

map.set(["key3", "key4"], undefined);

map.has(["key3", "key4"]); // => true

map.has(["key3"]); // => false

map.has(["key4"]); // => false

delete

const objRef = {};

map.set([objRef, "key1"], 123);

map.get([objRef, "key1"]); // => 123

map.delete([objRef, "key1"]);

map.get([objRef, "key1"]); // => undefined

forEach

const objRef = {};

map.set(["key1", "key2"], 12);

map.set(["key3", "key4"], 34);

map.forEach((key, value, map) => {
  console.log(key); // => ["key1", "key2"] or ["key3", "key4"]

  console.log(value); // => 12 or 34
});

clear

const objRef = {};

map.set(["key1", "key2"], 12);

map.set(["key3", "key4"], 34);

map.clear();

console.log([...map]); // => []
0.1.3

26 days ago

0.1.2

1 month ago

0.1.1

1 month ago

0.1.0

1 month ago