Skip to content

Latest commit

 

History

History
117 lines (77 loc) · 3.23 KB

README.md

File metadata and controls

117 lines (77 loc) · 3.23 KB

Build Status codecov

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-hash library 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 pairs

Javascript

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.