Three Ways to Find the Longest Word in a String in JavaScript (Recommended)

Three Ways to Find the Longest Word in a String in JavaScript (Recommended)

This article is based on the Free Code Camp Basic Algorithm script "Find the longest word in a string".

In this algorithm, we want to look at each word and count how many letters are in each word. Then, compare the counts to determine which word has the most characters, and return the length of the longest word.

In this article, I will explain three methods. First using FOR loop, second using sort() method and third using reduce() method.

Algorithmic Challenges

  • Returns the length of the longest word in the provided sentence.
  • Your response should be a number.

Provided test cases

  • findLongestWord("The quick brown fox jumped over the lazy dog") returns a number
  • findLongestWord("The quick brown fox jumped over the lazy dog") returns 6
  • findLongestWord("May the force be with you") returns 5
  • findLongestWord("Google do a barrel roll") returns 6
  • findLongestWord("What is the average airspeed velocity of an unladen swallow") returns 8
  • findLongestWord("What if we try a super-long word such as otorhinolaryngology") returns 19
function findLongestWord(str) {
 return str.length;
}
findLongestWord("The quick brown fox jumped over the lazy dog");

1. Use a FOR loop to find the longest word

For this solution, we will use the String.prototype.split() method

  • The split() method splits a string object into a string array by separating the string into substrings.

We will need to add a space between the brackets of the split() method

var strSplit = “The quick brown fox jumped over the lazy dog”.split(' ');

It will output an array of words:

var strSplit = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"];

If you don't add spaces between the brackets, you will get the following output:

var strSplit = 
[“T”, “h”, “e”, “ “, “q”, “u”, “i”, “c”, “k”, “ “, “b”, “r”, “o”, “w”, “n”, “ “, “f”, “o”, “x”, “ “, “j”, “u”, “m”, “p”, “e”, “d”, “ “, “o”, “v”, “e”, “r”, “ “, “t”, “h”, “e”, “ “, “l”, “a”, “z”, “y”, “ “, “d”, “o”, “g”];
function findLongestWord(str) {
 // Step 1. Split the string into an array of strings
 var strSplit = str.split(' ');
 // var strSplit = "The quick brown fox jumped over the lazy dog".split(' ');
 // var strSplit = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"];
 
 // Step 2. Initiate a variable that will hold the length of the longest word
 var longestWord = 0;

 // Step 3. Create the FOR loop
 for(var i = 0; i < strSplit.length; i++){
 if(strSplit[i].length > longestWord){ // If strSplit[i].length is greater than the word it is compared with...
 longestWord = strSplit[i].length; // ...then longestWord takes this new value
  }
 }
 /* Here strSplit.length = 9
  For each iteration: i = ? i < strSplit.length? i++ if(strSplit[i].length > longestWord)? longestWord = strSplit[i].length
  1st iteration: 0 yes 1 if("The".length > 0)? => if(3 > 0)? longestWord = 3
  2nd iteration: 1 yes 2 if("quick".length > 3)? => if(5 > 3)? longestWord = 5 
  3rd iteration: 2 yes 3 if("brown".length > 5)? => if(5 > 5)? longestWord = 5 
  4th iteration: 3 yes 4 if("fox".length > 5)? => if(3 > 5)? longestWord = 5 
  5th iteration: 4 yes 5 if("jumped".length > 5)? => if(6 > 5)? longestWord = 6 
  6th iteration: 5 yes 6 if("over".length > 6)? => if(4 > 6)? longestWord = 6 
  7th iteration: 6 yes 7 if("the".length > 6)? => if(3 > 6)? longestWord = 6
  8th iteration: 7 yes 8 if("lazy".length > 6)? => if(4 > 6)? longestWord = 6 
  9th iteration: 8 yes 9 if("dog".length > 6)? => if(3 > 6)? longestWord = 6 
  10th iteration: 9 no    
  End of the FOR Loop*/

 //Step 4. Return the longest word
 return longestWord; // 6
}

findLongestWord("The quick brown fox jumped over the lazy dog");

No comments:

function findLongestWord(str) {
 var strSplit = str.split(' ');
 var longestWord = 0;
 for(var i = 0; i < strSplit.length; i++){
 if (strSplit[i].length > longestWord){
 longestWord = strSplit[i].length;
  }
 }
 return longestWord;
}
findLongestWord("The quick brown fox jumped over the lazy dog");

2. Find the longest word using sort() method

For this solution, we will use the Array.prototype.sort() method to sort the array according to some sorting criteria and then return the length of the first element of this array.

  • sort() method sorts the elements of an array and returns the array.

In our case, if we just sort the array

var sortArray = [“The”, “quick”, “brown”, “fox”, “jumped”, “over”, “the”, “lazy”, “dog”].sort();

We will get the following output:

var sortArray = ["The", "brown", "dog", "fox", "jumped", "lazy", "over", "quick", "the"];

In Unicode, numbers come before uppercase letters, which come before lowercase letters.

We need to sort the elements according to some sorting criteria

[].sort(function(firstElement, secondElement) { return secondElement.length — firstElement.length; })

Compares the length of the second element with the length of the first element in the array.

function findLongestWord(str) {
 // Step 1. Split the string into an array of strings
 var strSplit = str.split(' ');
 // var strSplit = "The quick brown fox jumped over the lazy dog".split(' ');
 // var strSplit = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"];
 
 // Step 2. Sort the elements in the array
 var longestWord = strSplit.sort(function(a, b) { 
 return b.length - a.length;
 });
 /* Sorting process
 ab b.length a.length var longestWord
 "The" "quick" 5 3 ["quick", "The"]
 "quick" "brown" 5 5 ["quick", "brown", "The"] 
 "brown" "fox" 3 5 ["quick", "brown", "The", "fox"]
 "fox" "jumped" 6 3 ["jumped", quick", "brown", "The", "fox"]
 "jumped" "over" 4 6 ["jumped", quick", "brown", "over", "The", "fox"]
 "over" "the" 3 4 ["jumped", quick", "brown", "over", "The", "fox", "the"]
 "the" "lazy" 4 3 ["jumped", quick", "brown", "over", "lazy", "The", "fox", "the"]
 "lazy" "dog" 3 4 ["jumped", quick", "brown", "over", "lazy", "The", "fox", "the", "dog"]
 */
 
 // Step 3. Return the length of the first element of the array
 return longestWord[0].length; // var longestWord = ["jumped", "quick", "brown", "over", "lazy", "The", "fox", "the", "dog"];
        // longestWord[0]="jumped" => jumped".length => 6
}

findLongestWord("The quick brown fox jumped over the lazy dog");

No comments:

function findLongestWord(str) {
 var longestWord = str.split(' ').sort(function(a, b) { return b.length - a.length; });
 return longestWord[0].length;
}
findLongestWord("The quick brown fox jumped over the lazy dog");

3. Find the longest word using the reduce() method

For this solution, we will use Array.prototype.reduce().

  • The reduce() method applies a function to a reservoir and each value of the array (from left to right) to reduce it to a single value.

reduce() executes the callback function once for each element present in the array.

You can provide an initial value as the second argument to reduce, here we are adding an empty string "".

[].reduce(function(previousValue, currentValue) {...}, "");
function findLongestWord(str) {
 // Step 1. Split the string into an array of strings
 var strSplit = str.split(' ');
 // var strSplit = "The quick brown fox jumped over the lazy dog".split(' ');
 // var strSplit = ["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"];

 // Step 2. Use the reduce method
 var longestWord = strSplit.reduce(function(longest, currentWord) {
 if (currentWord.length > longest.length)
  return currentWord;
 else
  return longest;
 }, "");
 
 /* Reduce process
 currentWord longest currentWord.length longest.length if(currentWord.length > longest.length)? var longestWord
 "The" "" 3 0 yes "The"
 "quick" "The" 5 3 yes "quick"
 "brown" "quick" 5 5 no "quick"
 "fox" "quick" 3 5 no "quick"
 "jumped" "quick" 6 5 yes "jumped"
 "over" "jumped" 4 6 no "jumped"
 "the" "jumped" 3 6 no "jumped"
 "lazy" "jumped" 4 6 no "jumped"
 "dog" "jumped" 3 6 no "jumped"
 */
 
 // Step 3. Return the length of the longestWord
 return longestWord.length; // var longestWord = "jumped" 
        // longestWord.length => "jumped".length => 6
}

findLongestWord("The quick brown fox jumped over the lazy dog");

No comments:

function findLongestWord(str) {
 var longestWord = str.split(' ').reduce(function(longest, currentWord) {
 return currentWord.length > longest.length ? currentWord : longest;
 }, "");
 return longestWord.length;
}
findLongestWord("The quick brown fox jumped over the lazy dog");

This concludes this article on three ways to find the longest word in a string in JavaScript. For more information on finding the longest word in a string in js, please search 123WORDPRESS.COM’s previous articles or continue browsing the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Summary of 28 common JavaScript string methods and usage tips
  • Summary of several commonly used string methods in JavaScript (must-read for beginners)
  • Java method to convert Date type field into json string
  • A simple way to convert JavaScript strings to numbers
  • Summary of Common Operation Methods of JavaScript String Processing
  • Detailed explanation of Javascript string methods

<<:  MySQL 5.7.17 installation and configuration method graphic tutorial (windows)

>>:  MySQL 5.7.17 winx64 installation and configuration graphic tutorial

Recommend

Detailed explanation of invisible indexes in MySQL 8.0

Word MySQL 8.0 has been released for four years s...

How to configure nginx to return text or json

Sometimes when requesting certain interfaces, you...

Floating menu, can achieve up and down scrolling effect

The code can be further streamlined, but due to t...

How to use the Marquee tag in XHTML code

In the forum, I saw netizen jeanjean20 mentioned h...

Definition and usage of MySQL cursor

Creating a Cursor First, create a data table in M...

Implementation of multi-environment configuration (.env) of vue project

Table of contents What is multi-environment confi...

Summary of Css methods for clearing floats

Float is often used in web page layout, but the f...

Detailed explanation of common template commands in docker-compose.yml files

Note: When writing the docker-compose.yml file, a...

How to use module fs file system in Nodejs

Table of contents Overview File Descriptors Synch...

CSS code to achieve 10 modern layouts

Preface I watched web.dev's 2020 three-day li...

JavaScript to achieve floor effect

This article shares the specific code of JavaScri...

Implementation of grayscale release with Nginx and Lua

Install memcached yum install -y memcached #Start...

MySQL sorting using index scan

Table of contents Install sakila Index Scan Sort ...