JSFiddle - React, Tailwind, and code Playground

by HSilvaDaytona

HTML

Trie Spellchecker
<p />

<input type="text" placeholder="user input" id="input" />
<input type="button" value="Add to Dictionary" id="add" />
<input type="submit" value="Spell Check" id="check" />

<p id="added">
  <p />
    <p id="trieLST">
      <p />
       <p id="checking">
    <p />
      <p id="output">
      </p>

JavaScript

let Node = function () {
    this.keys = new Map();
    this.end = false;

    this.setEnd = function () {
        this.end = true;
    };
    this.isEnd = function () {
        return this.end;
    };
}; //function end 

let Trie = function () {

    this.root = new Node();

    this.add = function (input, node = this.root) {
        if (input.length == 0) {
            node.setEnd();
            return;
        } else if (!node.keys.has(input[0])) {
            node.keys.set(input[0], new Node());
            return this.add(input.substr(1), node.keys.get(input[0]));
        } else {
            return this.add(input.substr(1), node.keys.get(input[0]));
        }
    } //end addnd 

    this.isWord = function (word) {//bool if word is within the trie
        let node = this.root;
        while (word.length > 1) {
            if (!node.keys.has(word[0])) {
                return false;
            } else {
                node = node.keys.get(word[0]);
                word = word.substr(1);
            }
        }
        return (node.keys.has(word) && node.keys.get(word).isEnd()) ?
            true : false;
    } //end isword

    this.print = function () {
        let words = new Array();
        let search = function (node, string) {
            if (node.keys.size != 0) {
                for (let letter of node.keys.keys()) {
                    search(node.keys.get(letter), string.concat(letter));
                }
                if (node.isEnd()) {
                    words.push(string);
                }
            } else {
                string.length > 0 ? words.push(string) : undefined;
                return;
            }
        }; //end print


        this.checkSpelling = function (str) {
  
                for (i = 0; i < TrieTest.length; i++)
                    document.writeln((i + 1) + ": " + TrieTest[i]);
            
        }


        search(this.root, new String());
        return words.length > 0 ? words : mo;
    }; //end...