【Profile Lookup】 About the location of return "No such contact"

Tell us what’s happening:
About the location of return “No such contact”, I have a question.

I don’t know why I have to locate return “No such contact”; outside of for sentence.

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";      
    
    }
  } else {
      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 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36.

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

You write it outside the loop so if the loop fails it returns: ‘No such contact’ by default. If the name doesn’t exist it cant go through the loop.

Also, you don’t need another else statement to return ‘No such contact’, it will return automatically if the loop fails.

Thank you so much for your reply.

My thought that even if the name doesn’t exist in it the loop keeps running because I set “else”.
But an error occurred…

yeah, so basically if this condition isn’t true:

if(contacts[x].firstName === name)

your code will skip to:

return "No such contact";