Kolm viisi, kuidas leida JavaScripti stringi kõige pikem sõna

See artikkel põhineb Free Code Campi algoritmi skriptimisel „ Leidke stringi pikim sõna ”.

Selles algoritmis tahame vaadata iga üksikut sõna ja lugeda, mitu tähte on igas. Seejärel võrrelge loendusi, et teha kindlaks, millises sõnas on kõige rohkem tähemärke, ja tagastage pikima sõna pikkus.

Selles artiklis selgitan kolme lähenemisviisi. Esiteks FOR-tsükliga, teiseks sort () meetodiga ja kolmandaks reduc () meetodiga.

Algoritmi väljakutse

Tagastage antud lause pikima sõna pikkus.

Teie vastus peaks olema number.

Pakutakse testjuhtumeid

  • findLongestWord (“Kiire pruun rebane hüppas üle laisa koera”) peaks tagastama numbri
  • findLongestWord (“Kiire pruun rebane hüppas üle laisa koera”) peaks tagastama 6
  • findLongestWord (“Olgu jõud teiega”) peaks tagastama 5
  • findLongestWord („Google do the barrel roll“) peaks tagastama 6
  • findLongestWord („Mis on tühjendatud pääsukese keskmine kiiruse kiirus”) peaks tagastama 8
  • findLongestWord ("Mis siis, kui proovime ülipikka sõna, näiteks otorinolarüngoloogia")peaks tagastama 19
function findLongestWord(str) { return str.length; } findLongestWord("The quick brown fox jumped over the lazy dog");

1. Leidke FOR Loopiga pikim sõna

Selle lahenduse jaoks kasutame meetodit String.prototype.split ()

  • Split () meetodi lõheneb String objekt massiivi stringe eraldades string osadeks stringid.

Peame split () meetodi sulgude vahele lisama tühja ruumi ,

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

mis väljastab eraldatud sõnade massiivi:

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

Kui te sulgudesse tühikut ei lisa, on teil järgmine väljund:

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

Kommentaarideta:

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. Leidke meetodi sort () abil pikim sõna

Selle lahenduse jaoks kasutame massiivi sortimiseks mingi järjestuskriteeriumi järgi meetodit Array.prototype.sort () ja tagastame seejärel selle massiivi esimese elemendi pikkuse.

  • Omamoodi () meetodi sordib massiivi elemendid paigas ja tagastab massiivi.

Meie juhul, kui lihtsalt massiivi sorteerime

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

meil on see väljund:

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

Unicode'is on numbrid enne suurtähti, mis jäävad väiketähtede ette.

Peame elemendid sortima mõne tellimiskriteeriumi järgi,

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

kus teise elemendi pikkust võrreldakse massiivi esimese elemendi pikkusega.

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

Kommentaarideta:

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. Leidke meetodi reduc () abil pikim sõna

Selle lahenduse jaoks kasutame Array.prototype.reduce ().

  • Vähendada () meetodit kohaldatakse funktsioon vastu akult ja iga väärtuse massiivi (vasakult paremale), et vähendada selle ühe väärtuse.

reduc () täidab iga massiivi elemendi tagasihelistamisfunktsiooni.

Teise vähendatava argumendina võite anda algväärtuse, siin lisame tühja stringi “”.

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

Kommentaarideta:

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

Loodetavasti leidsite sellest abi. See on osa minu artiklist "Kuidas lahendada FCC algoritme" Free Code Camp Algorithm Challenges, kus pakun välja mitu lahendust ja selgitan samm-sammult, mis kapoti all toimub.

Kolm viisi stringi kordamiseks JavaScriptis

Selles artiklis selgitan, kuidas lahendada freeCodeCampi väljakutse "Korda stringi kordus string". See hõlmab…

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

Selles artiklis selgitan, kuidas lahendada Free Code Campi väljakutse “Massiivide suurimate arvude tagastamine”. See ...

Kui teil on oma lahendus või ettepanekuid, jagage neid allpool kommentaarides.

Või saate jälgida mind Medium , Twitter, Github ja LinkedIn , kohe pärast klõpsate roheline süda allpool ;-)

# StayCurious, # KeepOnHacking & # MakeItHappen!

Ressursid

  • split () meetod - MDN
  • sort () meetod - MDN
  • vähendada () - MDN
  • String.length - MDN
  • poolt - MDN