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