function HashTable(){
this.table = new Array(137)
this.simpleHash = simpleHash
this.betterHash = betterHash
this.showDistro = showDistro
this.put = put
}
function simpleHash(data){
let total = 0
for(let i = 0 ;i<data.length;i++){
total += data.charCodeAt(i)
}
return total % this.table.length
}
function betterHash(data){
let total = 0
let H = 0
for(let i = 0 ;i<data.length;i++){
total += total* H + data.charCodeAt(i)
}
total = total % this.table.length
if(total < 0){
total += this.table[this.table.length-1]
}
return parseInt(total)
}
function put(data){
let hash = this.betterHash(data)
this.table[hash] = data
}
function showDistro(){
for(let i =0 ;i<this.table.length;i++){
if(this.table[i]!=undefined){
console.log(i,this.table[i])
}
}
}
let someNames = ["David", "Jennifer", "Donnie", "Raymond","Cynthia", "Mike", "Clayton", "Danny", "Jonathan"];
let hTable = new HashTable();
for (let i = 0; i < someNames.length; ++i) {
hTable.put(someNames[i]);
}
hTable.showDistro();
console