NOTE: This is very much a WIP. Some heuristics I'm still not 100% sure of, and there certainly optimizations to be made. Contributions welcome!
A class for creating ordered dictionary data structures in JavaScript.
An ordered dictionary is essentially a Map
: a collection of key-value pairs
that maintains a stable and guaranteed insertion order. But sometimes you may
need to access the value of a Map
based on its position in the map (like
accessing an array value by its index). You also may need to add or remove items
at a given position rather than by key.
Enter the OrderedDict
class.
import { OrderedDict } from "ordered-dictionary";
const dictionary = OrderedDict([
["a", 1],
["b", 2],
["d", 4],
]);
// OrderedDict(3) {'a' => 1, 'b' => 2, 'd' => 4}
// inherits methods and properties from Map
assert(dictionary.get("a") === 1);
dictionary.set("e", 5);
assert(dictionary.get("e") === 5);
dictionary.entries();
// MapIterator {"a" => 1, "b" => 2, "d" => 4, "e" => 5}
// access values by index
assert(dictionary.at(0) === 1);
assert(dictionary.at(1) === 2);
assert(dictionary.at(-1) === 5);
// insert items by index
dictionary.insert(2, "c", 3);
assert(dictionary.at(2) === 3);
// remove items by index
dictionary.deleteAt(0);
assert(dictionary.at(0) === 2);
dictionary.deleteAt(-1);
assert(dictionary.at(-1) === 4);
Full documentation coming soon.
PRs welcome! Any help on algorithmic optimization would be greatly appreciated, as this is not at all my area of expertise.