Bug! - Find the longest word in a string

My function works, but it won’t pass me on returning 5 from “may the force be with you”.
Anyone know why? Thanks!

var largestArray = 1;

function findLongestWord(str) {
  var splitArray = str.split(" ");
  for (var i = 0; i < splitArray.length; i++) {
    if (splitArray[i].length > largestArray) {
      largestArray = splitArray[i].length;
    }
  }
  return largestArray;
}

findLongestWord("May the force be with you");

Global variable, largestArray should be inside the function.

If you use global variables generally everything will break once you get to the tests:

  1. The first test will be correct
  2. Then the value of largest array will be set globally to 5
  3. Say the next test is “one two four five”: longest word has a length of 4.
  4. But the variable is already set to 5.
  5. As nothing in that set of words has a length higher than 5, it will stay as 5, and so on.

If you put it inside the function it ‘resets’ to 1 each time the function runs, which is what you want.

Also, minor, but your naming is confusing: it’s the length of the longest string/word, not the largest array

1 Like

Ohhh!! Ok cool, thanks for the help Dan. Yea my naming could be better for sure, I was naming stuff for myself to try to figure this task out, that’s a great reminder to recheck for readable code. This was my first forum post for help, I really appreciate it.