Assignment 9

by Ebony McCoy

HTML

<form id="form">Enter Phrase.
  <br/>
  <textarea id="phrase" rows="4" cols="50">I want what I want and I know what I want</textarea>
  <br/>
  <input type="button" value="Parse Phrase" id="parse" onClick=parsePhrase();>
</form>
<br/>
<div id="output"></div>

JavaScript

var hashTable = new HashTable();

function parsePhrase() {
  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);
  }
  document.getElementById("output").innerHTML = hashTable.print();
}

function HashTable(key) {
  this.bins = {};
  this.length = 0;
  for (var n in key) {
    if (key.hasOwnProperty(n)) {
      this.bins[n] = key[n];
      this.length++;
    }

  }
  this.addWord = function(word, index) {
    if (this.hasWord(word)) {
      this.addExistingWord(word, index);
    } else {
      this.addNewWord(word, index);
    }
    return word;
  }
  this.hasWord = function(word) {
    return this.bins.hasOwnProperty(word);
  }
  this.addNewWord = function(word, index) {
    this.bins[word] = index;
    this.length++;
    return word;
  }
  this.addExistingWord = function(word, index) {
    var current = this.bins[word];
    this.bins[word] = current + " " + index;
    return word;
  }
  this.print = function() {
    var str = "";

    for (var w in this.bins) {
      if (this.hasWord(w)) {
        str = str + w + ": " + this.bins[w] + "<br/>";
      }
    }

    return str;
  }
}