@nebtex/hashmaps v1.5.0
HashMap / ObservableHashMap
A HasMap/HashMapObservable library for Javascript/Typescript, the library contains the next classes
HashMap
A class that allows you to create a map with objects as keys/values, if the key object has a hash function hash(), the hashMap instance is going to use that function result as key internally, If the key object does not have the hash function defined it is going to use a obtained hash with the object-hash library as follows.
import objectHash from 'object-hash'
const hash = key.hash ? key.hash() : objectHash(key);Note: For more info about
object-hashlibrary see: https://github.com/puleos/object-hash
API
The HashMap Class implements the IMap<K, V> interface, for more info about the available methods/properties see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
Examples
Typescript
import { HashMap } from '@nebtex/hashmap';
const hashMap = new HashMap<any, number>();
hashMap.set({a:34}, 80); // HashMapObject
hashMap.set({a:33}, 81); // HashMapObject
hashMap.size; // 2
hashMap.delete({a:33}); // true
hashMap.delete({b:22}); // false
hashMap.get({a:34}); // 80
hashMap.get({a:44}); // undefined
hashMap.has({a:34}); // true
hashMap.has({a:54}); // false
hashMap.values(); // Iterator {80, 81}
hashMap.keys(); // Iterator {{a:34}, {a:33}}
hashMap.entries(); // Iterator {[{a:34}, 80],[{a:33}, 81]}
hashMap.forEach((value, key, theHashMap) => {
  // do stuff
});
hashMap.clear(); // Removes all key/value pairsJavascript
import { HashMap } from '@nebtex/hashmap';
const hashMap = new HashMap();
/*
  All the same methods and properties as typescript example
*/ObservableHashMap
A dinamically keyed obserbable HashMap for Mobx, it has the same properties/methods as HashMap class, with two additional methods:
ObservableHashMap.intercept(interceptor).
Registers an interceptor that will be triggered before any changes are applied to the HashMap.
ObservableHashMap.observe(listener, fireImmediately?)
Registers a listener that fires upon each change in this HashMap, similarly to the events that are emitted for Object.observe.
Note: For more info about these two methods see: https://mobx.js.org/refguide/observe.html
Examples
Typescript
import { ObservableHashMap } from '@nebtex/hashmap';
import { isObservable } from 'mobx';
const hashMap = new ObservableHashMap<any, number>();
isObservable(hashMap); // true
/*
  All the same methods and properties as HashMap class
*/Javascript
import { ObservableHashMap } from '@nebtex/hashmap';
import { isObservable } from 'mobx';
const hashMap = new ObservableHashMap();
isObservable(hashMap); // true
/*
  All the same methods and properties as HashMap class
*/Licensing
@nebtex/hashmaps is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.