I am trying to write a basic javascript function to find the longest word in a string and log it's length.
So far I have:
function findLongestWord(str) {
var words = [];
var longest = [];
words.push(str.split(" "));
for(var i = 0; i < words.length; i++){
if (words[i].length > longest[0].length){
longest.push(words[i]);
}
}
return longest[0].length;
}
findLongestWord('The quick brown fox jumped over the lazy dog');
It makes perfect sense to me, yet it gives me an error. I tried console.logging each step and it fails around the for loop.
When you use words.push(str.split(" "))
, the array words
looks like
[
["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"]
]
Another problem is that when you check longest[0].length
for the first iteration in the for
, it is undefined
. Which results in the error
Uncaught TypeError: Cannot read property 'length' of undefined
To solve this, you can use longest
as string
instead of array
. And in the for
, assign the string having the length
greater than the current longest
string to it.
At the end of the function, you can return the longest
string.
Problems/Suggestions:
str.split(' ')
to directly assignment to words
variablelongest
as string
variable instead of array
and initialize
it to empty string, i.e. ''
, to avoid the above errorlongest
with the string in the words
arraywords
array is greater than the longest
, update the longest
.\s+
to split
the string by spacesfunction findLongestWord(str) {
var words = str.split(/\s+/);
var longest = '';
for (var i = 0; i < words.length; i++) {
if (words[i].length > longest.length) {
longest = words[i];
}
}
return longest;
}
var longestWord = findLongestWord('The quick brown fox jumped over the lazy dog');
document.write('Longest Word: "' + longestWord + '"');
document.write('<br />Longest Word Length: ' + longestWord.length);