JSFiddle - React, Tailwind, and code Playground

by Jeff Santos

HTML

<form id="form">Enter Phrase.
  <br>
  <textarea id='phrase' rows='10' 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

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++) {
    //alert(phraseAsStringArray[i]);
    hashTable.addWord(phraseAsStringArray[i], i + 1);
  }


  var display = "<br/>"
  var b = hashTable.binsW.length;
  for (var j = 0; j < b; j++) {
    display += hashTable.binsW[j] + ': ';
    display += hashTable.binsI[j];
    display += "<br/>";

  }


  document.getElementById("output").innerHTML = display;

}

function HashTable() {
  // Decide how to store the bins - add here
  // This will contain all the Words
  this.binsW = [];
  this.binsI = []; // using array as example (list is better)
  this.addWord = function(w1, w2) {
    // alert('Adding ' + word + ' to Hash Table, remove this alert in your submission');

    var indx = this.hasWord(w1);
    if (indx == 'v') {
      this.addNewWord(w1, w2)
    } else {
      this.addExistingWord(w1, w2, indx)
    }
    return w1;
    // You will add a word to the HashTable
    // If word is in table add to Word
    // If not create new one    
  };

  this.hasWord = function(w1) {
    var l = this.binsW.length;
    var val = 'v';
    for (var i = 0; i < l; i++) {
      if (this.binsW[i] == w1) {
        val = i;
      }
    } // Implement
    return val;
  }

  this.addNewWord = function(w1, w2) {
    var inD = this.binsW.length;
    this.binsW[inD] = w1;
    this.binsI[inD] = w2;
    return w1;
    // Implement

  }

  this.addExistingWord = function(w1, w2, indx) {
    this.binsI[indx] = this.binsI[indx] + ' ' + w2;

    // Adds Word to structure that already exists
    return w1;
  };
}

//function Word(word) {
// this.word = word; // store word
//this.indexes = []; // using array to store indexes

// Probably want some logic here