Build a Profile Lookup - Build a Profile Lookup

Tell us what’s happening:

I’m having trouble getting my function to return the value of the input property if it exists - the “no such property” and “no such contact” parts work. Is “person[property]” not the right way to access that value? Thank you for the help!

Your code so far

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


const lookUpProfile = (name, property) => {
  for (const person of contacts) {
    
    if (name !== person.firstName) {
      return "No such contact";
    } else {
      if (!person.hasOwnProperty(property)) {
        return "No such property";
      } else {
        return person[property];
      }
    }
  }
}

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36

Challenge Information:

Build a Profile Lookup - Build a Profile Lookup

if you are looking for Kristian, consider what happens when the loop is checking Akira, in that case name !== person.firstName and then No such contact is returned

you need to make sure that all the objects are checked

Oh right, it would break out of the loop at the first mismatch. Ok thanks!

I switched around the statements and am still failing the same tests, can you help point me towards what I’m missing?

const lookUpProfile = (name, property) => {
  for (const person of contacts) {
    if (name === person.firstName) {
      if (person.hasOwnProperty(property)) {
        return person[property];
      } else {
        return "No such property";
      }
    } else return "No such contact";
  }
}

You are still returning too early.

1 Like

in what way is what you have written different?
if name === person.firstName is false, the else execute, and the same thing happens

1 Like

Got it - I switched to a for loop and brought the no contact return statement outside of that loop. I’m a little lost on for vs. for..of but it passes lol Ty!!