Profile Lookup - return inside loop for avoid the good execution of the code

Hello everyone i could’nt understand why my function does not work when i return “No such contact” in the for loops , can someone explain it to me please ?

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 i = 0; i < contacts.length; i++) {
     if (contacts[i].firstName === name) {
         if (contacts[i].hasOwnProperty(prop)) {
             return contacts[i][prop];
         }else{
             return "No such property"
         }
     } else{
         return "No such contact"
     }
 }
// return "No such contact"
}
 // Change these values to test your function
 lookUpProfile("Akira", "likes");

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0.

Challenge: Profile Lookup

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

 return "No such contact";

has to be outside of the for-loop. In your code the first contact (Akira) gets tested, and since it doesn’t have the name “Vos” the loop is prematurely stopped and “No such contact” returned.

But we want it to check all contacts first and only then conclude whether there is “No such contact”. That’s why return "No such contact"; should come at the very end …

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