Tre måder at finde det længste ord i en streng i JavaScript

Denne artikel er baseret på Free Code Camp Basic Algorithm Scripting " Find det længste ord i en streng ".

I denne algoritme vil vi se på hvert enkelt ord og tælle, hvor mange bogstaver der er i hvert. Sammenlign derefter tællingerne for at bestemme, hvilket ord der har flest tegn, og returner længden af ​​det længste ord.

I denne artikel vil jeg forklare tre tilgange. Først med en FOR-løkke, anden ved hjælp af sorteringsmetoden () og tredje ved hjælp af reduceringsmetoden ().

Algoritmeudfordring

Returner længden på det længste ord i den angivne sætning.

Dit svar skal være et tal.

Medfølgende testtilfælde

  • findLongestWord (“Den hurtige brune ræv sprang over den dovne hund”) skulle returnere et tal
  • findLongestWord (“Den hurtige brune ræv sprang over den dovne hund”) skal vende tilbage 6
  • findLongestWord ("Må styrken være med dig") skal vende tilbage 5
  • findLongestWord ("Google gør en tønde rulle") skal returnere 6
  • findLongestWord (“Hvad er den gennemsnitlige lufthastighedshastighed for en ulæsset svale”) skal returnere 8
  • findLongestWord (“Hvad hvis vi prøver et superlangt ord som otorhinolaryngology”)skulle vende tilbage 19
function findLongestWord(str) { return str.length; } findLongestWord("The quick brown fox jumped over the lazy dog");

1. Find det længste ord med en FOR-løkke

Til denne løsning bruger vi metoden String.prototype.split ()

  • Metoden split () opdeler et strengobjekt i en række strenge ved at adskille strengen i understrenge.

Vi bliver nødt til at tilføje et tomt mellemrum mellem parentesen til metoden split () ,

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

som vil udsende en matrix med adskilte ord:

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

Hvis du ikke tilføjer pladsen i parentesen, får du denne 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  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  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");

Uden kommentarer:

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

2. Find det længste ord med metoden sort ()

Til denne løsning bruger vi Array.prototype.sort () -metoden til at sortere arrayet efter et rækkefølgekriterium og derefter returnere længden af ​​det første element i denne array.

  • Metoden sort () sorterer elementerne i en matrix på plads og returnerer matrixen.

I vores tilfælde, hvis vi bare sorterer arrayet

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

vi får denne output:

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

I Unicode kommer tal foran store bogstaver, som kommer før små bogstaver.

Vi er nødt til at sortere elementerne efter et ordrekriterium,

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

hvor længden af ​​det andet element sammenlignes med længden af ​​det første element i arrayet.

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 a b 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");

Uden kommentarer:

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 det længste ord med reduceringsmetoden ()

Til denne løsning bruger vi Array.prototype.reduce ().

  • Metoden reducere () anvender en funktion mod en akkumulator og hver værdi i arrayet (fra venstre mod højre) for at reducere den til en enkelt værdi.

reducere () udfører en tilbagekaldsfunktion én gang for hvert element, der er til stede i arrayet.

Du kan angive en indledende værdi som det andet argument at reducere, her tilføjer vi en tom streng “”.

[].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");

Uden kommentarer:

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");

Jeg håber, du fandt dette nyttigt. Dette er en del af min "How to Solve FCC Algorithms" -serie om artikler om Free Code Camp Algorithm Challenges, hvor jeg foreslår flere løsninger og forklarer trin for trin, hvad der sker under emhætten.

Tre måder at gentage en streng i JavaScript

I denne artikel vil jeg forklare, hvordan man løser freeCodeCamp's "Gentag en streng gentag en streng" -udfordring. Dette involverer ...

Two ways to confirm the ending of a String in JavaScript

In this article, I’ll explain how to solve freeCodeCamp’s “Confirm the Ending” challenge.

Three Ways to Reverse a String in JavaScript

This article is based on Free Code Camp Basic Algorithm Scripting “Reverse a String”

Three Ways to Factorialize a Number in JavaScript

This article is based on Free Code Camp Basic Algorithm Scripting “Factorialize a Number”

Two Ways to Check for Palindromes in JavaScript

This article is based on Free Code Camp Basic Algorithm Scripting “Check for Palindromes”.

Three Ways to Title Case a Sentence in JavaScript

This article is based on Free Code Camp Basic Algorithm Scripting “Title Case a Sentence”.

Three ways you can find the largest number in an array using JavaScript

I denne artikel vil jeg forklare, hvordan man løser Free Code Camps "Returner største numre i arrays" -udfordring. Dette…

Hvis du har din egen løsning eller forslag, så del dem nedenfor i kommentarerne.

Eller du kan følge mig på Medium , Twitter, Github og LinkedIn lige efter at du har klikket på det grønne hjerte nedenfor ;-)

# StayCurious, # KeepOnHacking & # MakeItHappen!

Ressourcer

  • split () metode - MDN
  • sort () metode - MDN
  • reducere () - MDN
  • Strenglængde - MDN
  • til - MDN