JSFiddle - React, Tailwind, and code Playground

by hesster92

HTML

Enter Phrase.
<br>
<textarea id='input' 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();'>
<div id="output"></div>

JavaScript

var hashTable = new HashTable();

function parsePhrase() {
  var phrase = document.getElementById('input').value;
  var phraseAsStringArray = phrase.split(' ');
  var len = phraseAsStringArray.length;

  for (var i = 0; i < len; i++) {
    hashTable.addWord(phraseAsStringArray[i], i + 1);
  }
  var report = '<br>';
  var lenbins = hashTable.binsItemText.length;
  for (var i = 0; i < lenbins; i++) {
    report += hashTable.binsItemText[i] + ': ';
    report += hashTable.binsItemLoc[i];
    report += "<br>";
  }

  document.getElementById("output").innerHTML = report;
  generateReport();
}

function HashTable() {
  this.binsItemText = [];
  this.binsItemLoc = [];
  this.addWord = function(itemText, itemLoc) {

    var foundAtIndex = this.hasWord(itemText);
    if (foundAtIndex == 'n') {
      this.addNewWord(itemText, itemLoc)
    } else {
      this.addExistingWord(itemText, itemLoc, foundAtIndex)
    }
    return itemText;
  };

  this.hasWord = function(itemText) {
    var len = this.binsItemText.length;
    var wordFound = 'n';
    for (var i = 0; i < len; i++) {
      if (this.binsItemText[i] == itemText) {
        wordFound = i;
      }
    }
    return wordFound;
  };

  this.addNewWord = function(itemText, itemLoc) {
    var newIndex = this.binsItemText.length;
    this.binsItemText[newIndex] = itemText;
    this.binsItemLoc[newIndex] = itemLoc;
    return itemText;
  };

  this.addExistingWord = function(itemText, itemLoc, foundAtIndex) {

    this.binsItemLoc[foundAtIndex] = this.binsItemLoc[foundAtIndex] + ' ' + itemLoc;
    return itemText;
  };
}