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;
};
}