Profile Lookup, can you tell my why this code doesn't pass

I’m not getting what went wrong. please, have a look.

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 && contacts[i].hasOwnProperty(prop)){

  return contacts[i][prop];
else if(contacts.firstName!==name){

  return "No such contact";
else if(contacts[i].hasOwnProperty(prop)==false){
  return "No such property";

// 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 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36.

Link to the challenge:

You will be able to say the contact does not exist only after checking the entire array however your code will return no such contact after checking the first contact. Recommend writing down your logic first before you start coding

For example, below is one way of approaching this problem.

 for each contact in the array{
     if the contact first name same as the name provided{
         if object has the property then{
            return the property value
            return no such property exist

if the code execution reaches this point then there is no such contact found