/ Published in: JavaScript
Released into the public domain.
Expand |
Embed | Plain Text
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Trie incremental search test</title> <script type="text/javascript"> <!-- var trie_test = { trie: function() { var root = []; this.add = function(strToAdd) { var node = root; for(var i=0;i<strToAdd.length;i++) { if(!node[strToAdd.charAt(i)]) node[strToAdd.charAt(i)] = []; node = node[strToAdd.charAt(i)]; } }; this.find = function(strToFind) { var node = root; for(var i=0;i<strToFind.length;i++) { node = node[strToFind.charAt(i)]; if(!node) return false; } return node; }; this.getChildren = function(rootStr) { var node = root; for(var i=0;i<rootStr.length;i++) node = node[rootStr.charAt(i)]; return rSearch(node, rootStr, []); }; function rSearch(node, name, names) { if(Object.keys(node)==0) { names.push(name); return names; } else { for(var i=0;i<Object.keys(node).length;i++) rSearch(node[Object.keys(node)[i]], name + Object.keys(node)[i], names); return names; } } } }; var testTrie = new trie_test.trie; function init() { testTrie.add('Alabama') testTrie.add('Alaska'); testTrie.add('Arizona'); testTrie.add('Arkansas'); testTrie.add('California'); testTrie.add('Colorado'); testTrie.add('Connecticut'); testTrie.add('Delaware'); testTrie.add('Florida'); testTrie.add('Georgia'); testTrie.add('Hawaii'); testTrie.add('Idaho'); testTrie.add('Illinois'); testTrie.add('Indiana'); testTrie.add('Iowa'); testTrie.add('Kansas'); testTrie.add('Kentucky'); testTrie.add('Louisiana'); testTrie.add('Maine'); testTrie.add('Maryland'); testTrie.add('Massachusetts'); testTrie.add('Michigan'); testTrie.add('Minnesota'); testTrie.add('Mississippi'); testTrie.add('Missouri'); testTrie.add('Montana'); testTrie.add('Nebraska'); testTrie.add('Nevada'); testTrie.add('NewHampshire'); testTrie.add('NewJersey'); testTrie.add('NewMexico'); testTrie.add('NewYork'); testTrie.add('NorthCarolina'); testTrie.add('NorthDakota'); testTrie.add('Ohio'); testTrie.add('Oklahoma'); testTrie.add('Oregon'); testTrie.add('Pennsylvania'); testTrie.add('RhodeIsland'); testTrie.add('SouthCarolina'); testTrie.add('SouthDakota'); testTrie.add('Tennessee'); testTrie.add('Texas'); testTrie.add('Utah'); testTrie.add('Vermont'); testTrie.add('Virginia'); testTrie.add('Washington'); testTrie.add('WestVirginia'); testTrie.add('Wisconsin'); testTrie.add('Wyoming'); } --> </script> </head> <body onload="init();"> <h1>Trie incremental search test</h1> <input type="text" id="txtSearch" onkeyup=" document.getElementById('cboSuggestions').innerHTML = ''; var results = testTrie.getChildren(this.value); if(results) { document.getElementById('cboSuggestions').size = results.length; for(var i=0;i<results.length;i++) { var newResult = document.createElement('option'); newResult.appendChild(document.createTextNode(results[i])); document.getElementById('cboSuggestions').appendChild(newResult); } }" /><br /> <select id="cboSuggestions"></select> </body> </html>
You need to login to post a comment.
