The Code for TOP SPOT

//Get the string from the page
//controller function
function getValue () {
    document.getElementById("alert").classList.add("invisible");

    let userString = document.getElementById("userString").value;

    let returnObj = checkForPalindrome(userString);

    displayString(returnObj);
}

//process and check the string for a palindrome
//logic function
function checkForPalindrome (userString) {
    //convert string to lower case
    userString = userString.toLowerCase();

    //remove spaces and special characters
    let regex = /[^a-z0-9]/gi;
    userString =userString.replace(regex, "");

    let revString = [];

    //reverse a string using a for loop
    for (let index = userString.length - 1; index >= 0; index--) {
        revString += userString[index];
    }

    let returnObj = {};

    //compare user string to reverse string
    if (revString == userString) {
        returnObj.msg = "Well done! You entered a palindrome!"
    }
    else {
        returnObj.msg = "Sorry! You did not enter a palindrome"
    }

    returnObj.reversed = revString;

    return returnObj;
}

//Display the results to the user
//View Function
function displayString(returnObj) {

    //write to the page
    document.getElementById("alertHeader").innerHTML = returnObj.msg;
    document.getElementById("msg").innerHTML = `Your phrase reversed is: ${returnObj.reversed}`;

    //show the alert box
    document.getElementById("alert").classList.remove("invisible");
}

The Code is structured in three functions.

Code Explanation

getValue is a controller function that gets the user's word or phrase from the App page, processes the string, and then displays the result back to the user.

checkForPalindrome is a logic function that processes and checks to see if a string is actually a palindrome. It has only one parameter that brings in the value of the user string from the getValue function. The function first converts the string into lower case. It then removes spaces and special characters from the string using a javascript regular expression. After that, it reverses the string using a for-loop and saves it character by character into a string array. It compares the user string and reversed string to see if they are equal. A message is generated based on this comparision. Finally, the message along with the reversed string are stored into a JavaScript Object, and passed out of the function.

displayString is a view function that takes in a JavaScript object from the getValue function. The object contains the results message and the reversed string which are written in the alert box on the page. The alert box is then revealed to the user.

What I Learned
  • Use JavaScript regular expressions for searching patterns that can be used in text search and text replace operations. This eliminated need for multiple lines of code to search and replace characters.
  • Use JavaScript objects as a container to hold multiple properties. This allows for easier passing of information between functions.
Possible Improvements
  • Show previously entered strings along with their statuses in a running history/list.
  • Allow the user to enter multiple different strings at once and check them simultaneously to see if they are palindromes.