Profile Lookup: return statement outside of for loop?

Tell us what’s happening:
In this correct solution, I’m wondering why the following code:

return “No such contact”

would be OUTSIDE OF THE FOR LOOP?

Your code so far


//Setup
var contacts = [
    {
        "firstName": "Akira",
        "lastName": "Laine",
        "number": "0543236543",
        "likes": ["Pizza", "Coding", "Brownie Points"]
    },
    {
        "firstName": "Harry",
        "lastName": "Potter",
        "number": "0994372684",
        "likes": ["Hogwarts", "Magic", "Hagrid"]
    },
    {
        "firstName": "Sherlock",
        "lastName": "Holmes",
        "number": "0487345643",
        "likes": ["Intriguing Cases", "Violin"]
    },
    {
        "firstName": "Kristian",
        "lastName": "Vos",
        "number": "unknown",
        "likes": ["JavaScript", "Gaming", "Foxes"]
    }
];


function lookUpProfile(name, prop){
// Only change code below this line
for (var x = 0; x < contacts.length; x++){
    if (contacts[x]["firstName"] === name) {
        if (contacts[x].hasOwnProperty(prop)) {
            return contacts[x][prop];
        } else {
            return "No such property";
        }
    }

}
return "No such contact";
// Only change code above this line
}

// Change these values to test your function
lookUpProfile("Akira", "likes");

Your browser information:

User Agent is: Mozilla/5.0 (X11; CrOS x86_64 10575.58.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36.

Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/profile-lookup/

Because that’s when has to happen after the loop finishes, once everything has been checked. If there is a contact found, that is inside the loop: one of the conditions is true, the property or “no such property” is returned, the function exits. If there are no contracts that match, nothing inside the loop will return.

1 Like

Thank you for your response DanCouper! Can you elaborate on why I couldn’t just add the "return ‘No such contact’ " as the else statement paired with the first if statement nested within the for loop ? I guess I’ve been working under the assumption that all if statements required an else statement in order to run properly, but maybe that’s not correct?

Hmm, I might have just answered the first of my 2 questions: is it because the for loop would return “No such contact” immediately after one failed loop to find a matching name in the 0th object?

2 Likes