Basic JavaScript - Profile Lookup

I dont understand why this last test isn’t passing:
Failed: lookUpProfile("Akira", "address") should return the string No such property

THE TASK The function should check if name is an actual contact’s firstName and the given property (prop) is a property of that contact.

If both are true, then return the “value” of that property.

If name does not correspond to any contacts then return the string No such contact.

If prop does not correspond to any valid properties of a contact found to match name then return the string No such property.

// 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 i = 0; i < contacts.length; i++) {
  if (contacts[i].firstName == name && contacts[i].hasOwnProperty(prop)) {
    return contacts[i][prop] || "No such Property";
  }
}
return "No such contact";

  // Only change code above this line
}

console.log(lookUpProfile("Akira", "likes"));

Your browser information:

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

Challenge: Basic JavaScript - Profile Lookup

Link to the challenge:

1 Like

Hi @Qlander

I think the problem is that you are checking contacts[i].firstName === name and contacts[i].hasOwnProperty(prop) together. Instead first check for the name and then for the prop. You should also console.log() all conditions inside the if first to see what actually you are doing there:

  console.log(contacts[i].firstName)
  console.log(contacts[i].hasOwnProperty(prop))
  console.log( (contacts[i].firstName === name) && contacts[i].hasOwnProperty(prop) )

And at the same time using console.log(lookUpProfile("Akira", "address")) as a test.
Probably will help you to understand the issue.
I hope this helps, happy coding and keep the good work!!

1 Like

Both the previous responses make valid points.

The way your if statement is written there is no logical way that in the return what is right of the || operator will ever get executed because the return in the if statement only runs if it is true. So, there is no possibility of ever returning “No such property” as currently written.

2 Likes

Thanks to you and Carlos, I was able to understand why my code wasnt working. Unfortunately, my additional attempts were unsuccessful. I ended up conceding and watching the video. I had a feeling that the solution would end up being much simpler than my subsequent attempts. Ohh well, now I know. Thanks for your help!

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.