Profile Lookup what is the problem with this code

Tell us what’s happening:
My code only works for the first object in the array, it does not move on to the next and I don’t understand where I’m wrong.

  **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 (var n=0; n < contacts.length; n++) {
    if (contacts[n].firstName === name){
      if (contacts[n].hasOwnProperty(prop)){
        return contacts[n][prop];
      }
      else {
        return "No such property"
      }
    }

    else {
      return "No such contact";
    }
  }
// Only change code above this line
}

lookUpProfile("Akira", "likes");
console.log(lookUpProfile("Kristian","lastname"));
  **Your browser information:**

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

Challenge: Profile Lookup

Link to the challenge:

Hi @Neno-N !

Welcome to the forum!

Think very carefully about what your code is doing for the if else statement.

Right now, you are telling the computer to check if the object’s first name equals the name prop

If it doesn’t this else clause is executed

remember that return statements exit a function.

The computer is doing exactly what you told it to do.

You will need to refactor your code to only return No such contact when you have looped through the entire contacts array.

1 Like

Hey, thank you for replying! It took me some time [a whole day] but I finally got it.

From what you said, that

else {
      return "No such contact";
    }

… should have been outside of my for loop (without the “else”). I now understand the return statements a bit better now. Thanks for the help.

2 Likes

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