Having trouble with some condition when passing my function

I am working on Basic Javascript : Profile look up - exercise,

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 prop;
      }else{
        return "No such property";
      }
  } else{
    return "No such contact";
  };
}
// Only change code above this line
}

And this is the setup

//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"]
    }
];

I got this messages

“Kristian”, “lastName” should return “Vos”

“Sherlock”, “likes” should return [“Intriguing Cases”, “Violin”]

“Harry”,“likes” should return an array

please help me to find my mistake

A few things I do not get. First, you are traversing the contacts array, but if the first object in contacts does not have the argument name as a name, then you return “No such contact”, which means that you are skipping all other checks of the rest of items in the array. Second, even when you get the match, you return the property, not the value of the property (Vos, not lastName)

Keep in mind that a function is done as soon as it hits a return. If a return statement is hit in the first iteration of your loop, only the first value will be checked.