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