extra-keys-map
v0.1.3
Published
Same as Map, but accepts an array of keys.
Downloads
3
Maintainers
Readme
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
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]); // => []