Need help regarding profile lookup

hi, i am doing the profile lookup challenge, can somebody point out the problem in the code.
here is my code:

function lookUpProfile(name, prop){
// Only change code below this line
for(var i=0; i< contacts.length; i++)
{
if(name==contacts[i].firstName)
{ // check for the first name
if(contacts[i].hasOwnProperty(prop))
{ //checks for the given prop
return contacts[i][prop];
}else
{ // if not found
return ‘No such property’;
}
}else
{ //no name exists
return “No such contact”;
}
}
// Only change code above this line
}

// Change these values to test your function
console.log(lookUpProfile(“Kristian”, “lastName”));

Can you post your code here as well?

Hey @adarshk010,
Use the “Ask for help” button on challenge page whenever you need help with any of the challenges. It formats your code properly and also gives link to your challenge.

here is the function, sry
‘’’
function lookUpProfile(name, prop){
// Only change code below this line
for(var i=0; i< contacts.length; i++)
{
if(name==contacts[i].firstName)
{ // check for the first name
if(contacts[i].hasOwnProperty(prop))
{ //checks for the given prop
return contacts[i][prop];
}else
{ // if not found
return ‘No such property’;
}
}else
{ //no name exists
return “No such contact”;
}
}
// Only change code above this line
}

// Change these values to test your function
console.log(lookUpProfile(“Kristian”, “lastName”));

Tell us what’s happening:
only 3 errors remain , but i can’t seem to find any more error. please need help

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
for(var i=0; i< contacts.length; i++)
{
  if(name==contacts[i].firstName)
  {                                    // check for the first name
     if(contacts[i].hasOwnProperty(prop))
     {                                 //checks for the given prop
         return contacts[i][prop];
     }else
     {                                 // if not found
        return 'No such property';
     }
  }else
    {                                    //no name exists  
      return "No such contact"; 
     } 
}
// Only change code above this line
}

// Change these values to test your function
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/69.0.3497.100 Safari/537.36.

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

Look at your logic.

  • Start a loop.
  • At the first record, if a contact is found, return that contact.
  • AT THAT SAME FIRST RECORD, if the array element doesn’t contain that property, return an error.
  • AT THAT SAME FIRST RECORD AGAIN, if it doesn’t match, return no match.

You never actually do the loop.

Get rid of this else statement.

You will have to use this return after for loop in tour function.
That should do it.
Does that help?

1 Like

UPDATE: never mind that. :slight_smile:

You need to understand the difference between dot and bracket notation.

contacts[i].firstName JS will treat firstName as a string and will look for a property called “firstName” (which, in this case, doesn’t exist).
contacts[i][firstName] whereas, when bracket notation is used, JS treats firstName as a variable and will use whatever that variable is referencing.

Well, it looks like the OP is looking up based on first name, and returning a given object’s property when that first name has matched. Were the OP using contacts[i].prop rather than contacts[i][prop], I’d be worried.

Each object does have a firstName property, but it may or may not have the prop valued property.

1 Like