Profile Lookup (why this dosen't work?)

Profile Lookup (why this dosen't work?)
0

#1

Tell us what’s happening:

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(firstName, prop){
// Only change code below this line
for(var i=0;i<contacts.length;i++){
  if((contacts[i].firstName == firstName) && (contacts[i].hasOwnProperty(prop) == true)){
        return contacts[i].prop;
  }
  else if(contacts[i].firstName != firstName){
    return "No such contact";
  }
  else
  {
    return "No such property";
  }
}
// Only change code above this line
}

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

Your browser information:

Your Browser User Agent is: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36.

Link to the challenge:


#2

Hi @azar103,

There’s 2 issues that I can see.

First, you’re never looping over the entire the array, because you’ve setup the if / else statement to always return something, it will only ever check the first element.

Secondly, you’re using the dot operator to access the “prop” property, you may want to look into the difference between dot and bracket notation when it comes to accessing properties on objects, especially when you’re using a variable: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_accessors