JSFiddle - React, Tailwind, and code Playground

by dhizzybusy

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>
<div id="output"></div>

JavaScript

var hashTable = new HashTable(); // Global
function parsePhrase() {
  var phrase = document.getElementById('phrase').value;
  var phraseAsStringArray = phrase.split(' ');
  var len = phraseAsStringArray.length;
  hashTable.bins = [];
  for (var i = 0; i < len; i++) {
    //parsing each word
    hashTable.addWord(phraseAsStringArray[i], i + 1);
  }
  //printing result to console
  for (var i = 0; i < hashTable.bins.length; i++) {
    console.log(hashTable.bins[i]);
  }
}

function HashTable() {
  // Decide how to store the bins - add here
  // This will contain all the Words
  this.bins = []; // using array as example (list is better)
  this.addWord = function(word, index) {
    var add = true;
    //this is boolean value to check for add new one or not
    for (var i = 0; i < hashTable.bins.length; i++) {
      for (var j = 0; j < hashTable.bins[i].length; j++) {
        if (hashTable.bins[i][j] === word) {
          //checking for exisiting word
          hashTable.bins[i].push(index);
          add = false;
          break;
        }
      }
    }
    if (add) {
      //adding new bin
      var arr = [];
      arr.push(word);
      arr.push(index);
      hashTable.bins.push(arr);
    }
    return word;
  };
}