Skip to content

nebtex/hashmaps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

HashMap and ObservableHashMap Library

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published