Basic Algorithm Scripting - Find the Longest Word in a String

Tell us what’s happening:
Describe your issue in detail here.
// running tests
findLongestWordLength(“Google do a barrel roll”) should return 6.
// tests completed
// console output
2

what’s wrong with my code it works fine on all the user tests except for one

Your code so far

var longWord = "";
function findLongestWordLength(str) {
  let j = 1;
  let word = str.split(" ");
  for (let i=0; i<word.length; i++) {
    if (word[i].length > word[j].length) {
      longWord = word[i];
      j++;
    }
  }
  return longWord.length;
}

console.log(findLongestWordLength("Google do a barrel roll"));

Your browser information:

User Agent is: Mozilla/5.0 (Linux; Android 11; Nokia 3.4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Mobile Safari/537.36

Challenge: Basic Algorithm Scripting - Find the Longest Word in a String

Link to the challenge:

Hi,

What is the perpouse of j ?

var longWord = "";  // It would be best to place function specific variables inside the function. 

function findLongestWordLength(str) {
  let j = 1;  // What is the perpose of this?
  let word = str.split(" ");
  for (let i=0; i<word.length; i++) {
    if (word[i].length > word[j].length) { // What is 'j' meant to do here?
      longWord = word[i];
      j++;
    }
  }
  return longWord.length;
}

to check the second word position i thought it will be easier than a nested loop

Alright, let’s visualize this code.

function findLongestWordLength(str) {
  var longWord = ""; 
 let word = str.split(" "); 
     // Let us assume that the value if `word` = ["Google", "for", "me"] 
  let j = 1;  
  for (let i=0; i<word.length; i++) {
    if (word[i].length > word[j].length) { 
      longWord = word[i];
      j++;
    }
  }
  return longWord.length;
}

First for iteration:

if (6 > 3) then longWord = “Google” . j = 2

Second for iteration:

if(3 > 2) then longWord = “for”. j =3

Third iteration:

if(4 > undefined) …false

For loop ends with longWord = "for"

The problem obvious for me now but there’s on more question why it works on different string
Llike this one “The quick brown fox jumped over the lazy dog”
Because j++ is inside the condition

The goal of the loop is to iterate through an array of strings and find the longest.

Have you come across the Math.max() as yet? What max() does is to take two numbers and then return the largest one. So Math.max(1, 2) will return 2.

The reason that I have mentioned this is to give you an idea of the essence of what the for loop should be doing.

Consider this. Before entering the loop, longWord.length is 0. Instead of using j. You could say “Hey, if the length of the current word (word[i]) is greater then the current length of the value in longWord , then replace the current value of longWord with word[i], Keep on doing that until the loop ends”

[Spoiler]
It worked thanks a lot man here’s my code

var longWord = “”;
function findLongestWordLength(str) {
let word = str.split(" ");
for (let i=0; i<word.length; i++) {
if (word[i].length > longWord.length) {
longWord = word[i];
}
}
return longWord.length;
}

console.log(findLongestWordLength(“May the force be with you”));