Basic JavaScript - Profile Lookup

Tell us what’s happening:
Describe your issue in detail here.

I’m quite confused about where I am getting it wrong the first condition seems to work perfectly until I add the other conditions.

Please help review. Thanks

Your code so far

// Setup
const 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(let contact of  contacts){
    //console.log(contact)
    if(contact['firstName'] == name && contact.hasOwnProperty(prop)){
      return contact[prop]  
    }else if(contact['firstName'] !== name){
      return "No such contact"
    }else if(!contact.hasOwnProperty(prop)){
      return "No such property"
    }

  }

  // Only change code above this line
}

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/110.0.0.0 Safari/537.36

Challenge: Basic JavaScript - Profile Lookup

Link to the challenge:

This is a nice effort on a difficult task. You are currently looping through each object in the array. The problem is that you are always returning something on the first item. But if the name is, say, " Kristian", then we don’t want to return on the first item. We want to return on the 4th item.

Here’s how I would have done it:

  const curPersonObj = contacts.find(x=> x.firstName===name);
  if(curPersonObj && prop in curPersonObj){
  return curPersonObj[prop];
} else if(!curPersonObj) {
  return 'No such contact'
  }
  else return 'No such property'