JSFiddle - React, Tailwind, and code Playground

by JInks Peng

JavaScript

function HashTable() {
   this.table = new Array(137);
   this.showDistro = showDistro;
   this.betterHash = betterHash;
   this.put = put;
   this.init = init;
  }
  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] !== undefined) {
         console.log(i + " : " + this.table[i]);
      }
   }
  }
  function put(data) {
   var pos = this.betterHash(data);
   this.table[pos] = data;
  }
  function init(data) {
   for(var i = 0; i < data.length; ++i) {
       hTable.put(data[i]);
   }
  }


 function getRandomInt(min,max) {
   return Math.floor(Math.random() * (max - min + 1)) + min;
 }
 function genStuData(arr) {
  for(var i = 0; i < arr.length; ++i) {
    var num = "";
    for(var j = 0; j < 6; ++j) {  //id : length - 6;
      num += Math.floor(Math.random() * 10);
    }
    num += getRandomInt(50,100);
    arr[i] = num;
  }
 }

 var newStudent = 10;
 var students = new Array(newStudent); // students : num - 10;
 genStuData(students);
 console.log("Student data:\n");
 for(var i = 0; i < students.length; ++i) {
  console.log(students[i].substring(0,6) + " " + students[i].substring(6));
 }
 console.log("Data distribution:\n");
 var hTable = new HashTable();
 hTable.init(students);
 hTable.showDistro();