Profile Lookup helppp

Function is not returning values

Your code so far


//Setup
var 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
var i = 0;

for(var 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
}

// Change these values to test your function
lookUpProfile("Akira", "likes");

Your browser information:

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

Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/profile-lookup

Your function is returning values. The problem is, your for loop never makes it past the first iteration for each test, so some of the tests fail. Why? Because you return a value within the for loop.

Hi
Think about when you are returning. A return statement stops execution of the function.

Think about what happens when the first element is not a match. Do the other elements ever get tested?

Good luck

i tried assigning it to a variable and returning the variable in the end as well,didnt work either

so adding a return statement in the for loop action would prevent it from looping the action?

It is fine to have a return statement in the for loop. However, you need to make sure which ones (you have three) should actually be there in order for your solution to pass the tests.

Answer this question: How do you really know when to return “No such contact”?

1 Like

ohh okay so i should let the loop complete an return both statements of no property and no name if no name is found. Thank you so much!

The order of your operations is important. A return statement in for loop is only a problem if it prevents you from testing all elements. Of course, once you find the element you are looking for then a return statement would be fine because there is no need to keep searching.

You will need to keep testing until you find the element you are looking for returning either the property or statement ‘no such property’.

If you have tested them all and still not found the element you are looking for then you can return ‘no such contact’

1 Like

yes i didnt get the fact that i wasnt letting the loop complete and returning “no such name” without it having checked the other objects.thanks for your help!

1 Like