The Longest Word explainer

Aim of the puzzle: Write a function that takes an array of strings and returns the longest string in the array.
Walk through of solution: At the end of this course, you will be writing a function that takes a string and an array of strings, and returns the longest string in the array that is a subsequence of the other string.

For now, write a function that simply returns the longest string in an array of strings. This will be a useful helper function to use later.

To start, create a local variable to store the longest string. Set its value to be an empty string. You will be adding to it later in the function. For example:

let longestString = '';

Then, add a for loop to iterate through the array of strings. Inside the for loop, add an if statement that checks if the current string being looked at is longer than the longest string. It should look something like this:

    for (let word of array) {
        if (word.length > longestWord.length) {
            longestWord = word
        }
    }

If a word is found that is longer than longestWord, then that word is assigned to longestWord.

At the end of the function, return the longest string.
Javascript Concepts: Functions, Strings, .length, For Loops, If Statements, Arrays
Additional Code (hidden code that runs before the puzzle’s code):

let subsequences = ['able', 'ale', 'apple'];
let stringSequence = ['abppplee'];

I need help I don’t get it

Hey there,

In your function, you are creating a variable called longestWord, and storing the string 'word' in it.

Take another read through the Puzzle Explainer post at the start of this thread. It breaks the puzzle down step by step. If there is anything unclear about the explanation or you have any questions about it, please let me know and I’ll be happy to answer them!

Ben

Hope this helps!
Ben

There is let of I don’t know where you find that and I don’t know how to make a loop

Hey there, no worries.

In the app, when you tap the for...of key, the for loop will automatically put:

for (var element of ___)

It’s completely fine to use var, and I’ll be updating the solution code for this puzzle to use var, as it isn’t currently possible to put let in a for...of loop in the app.

It looks like you’re almost done with the puzzle! You just need to return the longest word from the function.

If you need a refresher on for loops, return statements, or any other JavaScript concepts, I suggest taking another look at the Fundamentals I and II courses again and then coming back to the Intro to Interviewing course.

Good luck, and let me know if you have any more questions!
Ben

1 Like

I got this to work, I think, but it tells me to ask for grasshopper support.

Hey there,

It looks like you have 2 different if statements that are both updating the value of BigWord.

The first if statement you have is checking if the length of the subsequences array is greater than the length of the BigWord string. If true, it is setting the value of BigWord to be the subsequences array.

The second if statement in your code is checking if the length of the current string in the array is greater than the length of the BigWord string. If true, then it is updating BigWord to be this string.

This 2nd if statement is what you want. Deleting the first if statement should solve the puzzle.

Hope this helps!
Ben

Thank you, it did help

1 Like

What does this actually mean?

Where am I going wrong?
I am iterating through the array, adding the word to longWord, the testing it and returning the longWord (which should be the longest.)

I posted this over a week ago… will I get a reply soon?

Hey there, thanks for your patience!

I see what the issue is. Remove the line longWord = array[i].

Before your for loop, longWord is being set to an empty string, but inside the for loop, it’s being set again to be the current element in the array. Then the test is checking if the current array element is longer than longWord.

Because longWord has the value array[i], the if statement is checking if array[i].length > array[i].length.

Take out the line longWord = array[i], and the puzzle should complete.

Hope this helps!
Ben

Hello I’m having trouble with this course

Hey there, you’re pretty close! Try walking through the logic of the function.

If the current word (element) in the array of words (array) is longer than the longest string so far (longeststring), what do you think should happen? Right now there isn’t any code in your if statement’s code block.

After all of the words have been looped through, what should the function return?

Hope this helps. Let me know if you have any questions!
Ben

What’s wrong with the code? I got the same result as the example, but grasshopper doesn’t think the code is correct

Hey there, you’re very close!

The problem is that Thelongestword is being declared inside the for loop and set to an empty string.

This means that every single time it loops, Thelongestword is being set to an empty string, which means that element.length will always be greater than Thelongestword.length.

Move the variable declaration up so that it is before the for loop.

Also, try to get into the habit of using “camel case” when naming your variables. Leave the first word lower case, and then capitalize the first letter of each word after, for example: theLongestWord instead of Thelongestword.

The code will run no matter how you capitalize your variable names, but camel case is the convention used by JavaScript developers, so it’s a good habit to get into.

Good luck!
Ben

I don’t know how to proceed from here

Hi there,

Looks like you’re using the string 'word' instead of the variable word.

To fix, delete the 'word.length' that’s inside the parentheses () of the if statement. Then, in its place, insert the word key from the coding keyboard. Then, select the .length key from the coding keyboard.

Once you’ve done that, update the line longestWord = 'word' so you’re setting longestWord to the variable word instead of the string 'word'.

Hope this helps!
Natalie