Please tell me what is wrong with this code...im stuck here

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

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

Challenge: Profile Lookup

Link to the challenge:

Sorry, my initial question was not very good because your code example isn’t formatted very well and I was fooled a little.

function lookUpProfile(name, prop) {
  // Only change code below this line
  for (let i = 0; i < contacts.length; i++) {
    if (contacts[i]["firstName"] === name) {
      if (contacts[i].hasOwnProperty(prop)) {
        return contacts[i][prop];
      } else {
        return "No such property";
      }
    } else {
      return "No such contact";
    }
  }
  // Only change code above this line
}

Now that we have better formatting, how many times will your for loop execute? Remember, a return statement immediately stops the function and returns a value.

my for loop would run 4 times , evaluating the first name property of all the objects in the contacts array and checking if they are equal to name. But when i run the test it fails and i’ve gone through the code a thousand times but can’t seem to see what is wrong.

Will it? I suggest you add a console.log to the beginning of the for loop to make sure this is the case. Perhaps something like:

console.log('for loop: i = ', i);

If it is executing up to 4 times then you should see the value of i increment from 0 toward 3, at least some of the time, right?

the for loop idid not run completely due to the return statements which ended the loop in the middle.

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