RB_JSFIDDLE_A9
by Ryan Brown
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>
CSS
#form, #output, #phrase
{
font-family: courier new;
}
JavaScript
function parsePhrase()
{
var hashTable = new HashTable();
var phrase = document.getElementById('phrase').value;
var phraseAsStringArray = phrase.split(' ');
var length = phraseAsStringArray.length;
for (var i = 0; i < length; i++)
{
//alert(phraseAsStringArray[i]);
hashTable.addWord(phraseAsStringArray[i], i+1);
};
var report = '<br/>'
var binLength = hashTable.binsItemTxt.length;
for (var i = 0; i < binLength; i++)
{
report += "<br/>" + hashTable.binsItemTxt[i] + ": ";
report += hashTable.binsItemLoc[i] + " <br/>";
};
document.getElementById("output").innerHTML = report;
}
function HashTable()
{
// Decide how to store the bins - add here
// This will contain all the Words
this.binsItemTxt = [];
this.binsItemLoc = [];
this.addWord = function(itemTxt,itemLoc)
{
var discoveredAt = this.hasWord(itemTxt);
if (discoveredAt == 'n')
{
this.addNewWord(itemTxt,itemLoc)
}
else
{
this.addExistingWord(itemTxt,itemLoc,discoveredAt)
}
return itemTxt;
};
this.hasWord = function(itemTxt)
{
var length = this.binsItemTxt.length;
var wordFound = 'n';
for (var i = 0; i < length; i++)
{
if (this.binsItemTxt[i] == itemTxt)
{
wordFound = i;
}
}
return wordFound;
};
this.addNewWord = function(itemTxt,itemLoc)
{
// Implement
var newIndex = this.binsItemTxt.length;
this.binsItemTxt [newIndex] = itemTxt;
this.binsItemLoc [newIndex] = itemLoc;
return itemTxt;
};
this.addExistingWord = function(itemTxt,itemLoc,discoveredAt)
{
// Adds Word to structure that already exists
this.binsItemLoc [discoveredAt] = this.binsItemLoc [discoveredAt] + ' ' + itemLoc;
return itemTxt;
};
}