JSFiddle - React, Tailwind, and code Playground

by JInks Peng

JavaScript

function HashTable() {
   this.table = new Array(137);
   this.showDistro = showDistro;
   this.simpleHash = simpleHash;
   this.put = put;
   this.init = init;
   this.builChains =builChains;
  }
  function simpleHash(data) {
   var total = 0;
   for(var i = 0; i < data.length; ++i) {
      total += data.charCodeAt(i);
   }
   return total % this.table.length;
  }
  function betterHash(string) {
   var H = 37;
   var total = 0;
   for(var i = 0; i < string.length; ++i) {
      total = H * total + string.charCodeAt(i);
   }
   total = total % this.table.length;
   if(total < 0) {
    total += this.table.length-1;
   }
   return parseInt(total);
  }
  function showDistro() {
   var n = 0;
   for(var i = 0; i < this.table.length; ++i) {
      if(this.table[i][0] !== undefined) {
         console.log(i + " : " + this.table[i]);
      }
   }
  }
  function put(data) {
   var pos = this.simpleHash(data);
   this.table[pos].push(data);
  }
  function init(data) {
   for(var i = 0; i < data.length; ++i) {
       this.put(data[i]);
   }
  }
  function builChains() {
    for(var i = 0; i < this.table.length; ++i) {
      this.table[i] = new Array();
    }
  }

  var someNames = ["Davi","Jennifer","Donnie","Raymond","Cynthia","Mike","Clayton","Danny","Jonathan"];
  var hTable = new HashTable();
  hTable.builChains();
  hTable.init(someNames);
  hTable.showDistro();