hashtabler.js
Version:
Library with a hash table.
85 lines (76 loc) • 2.02 kB
JavaScript
const { Listr } = require('listr.js');
const Hash = require('object-hash');
let Hashtabler = (function(){
let table = [];
return {
/**
* Insert object
*
* @param {Object} object
* @param {String} key
* @returns {String} key
*/
insert: function (object, key = null) {
key = key || this.calculateKey(object);
if (this.existsKey(key)) {
(table[key]).append(object);
} else {
let list = new Listr();
list.append(object);
table[key] = list;
}
return key;
},
/**
* Find key
*
* @param {String} key
* @returns {Listr|undefined} Returns the object if key exists.
*/
get: function (key) {
return table[key];
},
/**
* Return true if key exists
*
* @param {String} key
* @returns {boolean}
*/
existsKey: function (key) {
return key in table;
},
/**
* Calculate new key
*
* @param {Object} object
* @returns {String}
*/
calculateKey: function (object) {
return Hash(object);
},
/**
* Delete object
*
* @param {String} key
* @returns {boolean} Returns true if key are deleted.
*/
delete: function (key) {
let exists = false;
if (this.existsKey(key)) {
delete table[key];
exists = true;
}
return exists;
},
/**
* Delete all objects
*
* @returns {boolean}
*/
clear: function () {
table = [];
return true;
}
};
});
module.exports.Hashtabler = Hashtabler;