JSFiddle - React, Tailwind, and code Playground
by jrab227
JavaScript
var hashTable = function(hasher) {
var _hasher = hasher
var _data = new Array(256)
var exports = function(){
return
}
exports.data = function(){
return _data
}
exports.hasher = function() {
if (arguments.length){
_hasher = arguments[0]
return exports
}
return _hasher
}
exports.save = function(element){
var key = _hasher(element[0])
if ( (typeof _data[key]) === "undefined" ||
(_data[key].length === 0)) {
_data[key] = [element]
} else {
_data[key].push(element)
}
return exports
}
exports.get = function(key){
var hash = _hasher(key)
if ((typeof _data[hash]) === undefined){
return undefined
}
return _data[hash].reduce(function(agg, next){
if (agg) {
return agg
}
if (next[0] == key){
return next
}
return undefined
}, undefined)
}
return exports
}
var splitString = function(str){
if (str === "") {
return []
}
return [str[0]].concat(splitString(str.slice(1)))
}
var myHash = function(key){
var num = parseInt(splitString(key).map(function(letter){
return letter.charCodeAt(0)
}).join(""))
return num % 128
}
var xs = [["fo", "Hello"], ["bar", "World"]]
var store = hashTable(myHash)
xs.map(function(x){
store.save(x)
})
console.log(store.data())