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())