Module 8 A1

Hashing Part 1

by Jenni Meiklejohn

HTML

<h1><center> Assignment 9 </center></h1>
<h2><center> Hash Compression  </center></h2>


<form id="form">Enter Phrase.
  <br>
  <textarea id='phrase' rows='10' cols='50'>I am a man, I consider nothing that is human alien to me.</textarea>
  <br>
  <input type="button" value="Parse Phrase" id="parse" onClick='parsePhrase();'>
</form>
<div id="output"></div>

JavaScript

function parsePhrase() {
  var hashTable = new HashTable();
  var phrase = document.getElementById("phrase").value;
  var phraseAsStringArray = phrase.split(' ');
  var len = phraseAsStringArray.length;

  for (var i = 0; i < len; i++) {
    hashTable.addWord(phraseAsStringArray[i], i + 1);
  };

  var d = " ";
  var aLength = hashTable.txt.length;
  for (var i = 0; i < aLength; i++) {
    d += "<br>" + hashTable.txt[i] + ": " + hashTable.index[i] + "<br>";
  };
  document.getElementById("output").innerHTML = d;
}

function HashTable() {
  this.txt = [];
  this.index = [];
  this.addWord = function(word, wLocation) {

    var atIndex = this.hasWord(word)
    if (atIndex == true) {
      this.addNewWord(word, wLocation)
    } else {
      this.addExistingWord(word, wLocation, atIndex)
    }
  };

  this.hasWord = function(word) {
    var len = this.txt.length;
    var wordFound = true;
    for (var i = 0; i < len; i++) {
      if (this.txt[i] == word) {
        wordFound = i;
      }
    }
    return wordFound;
  };

  this.addNewWord = function(word, wLocation) {
    var nIndex = this.txt.length;
    this.txt[nIndex] = word;
    this.index[nIndex] = wLocation;
    return word;
  };

  this.addExistingWord = function(word, wLocation, atIndex) {
    this.index[atIndex] = this.index[atIndex] + " " + wLocation;
    return word;
  };
}