Javascript Profile Lookup

Javascript Profile Lookup
0.0 0

#1

Hello, I have trying to solve this challenge –
We have an array of objects representing different people in our contacts lists.

A lookUpProfile function that takes firstName and a property (prop) as arguments has been pre-written for you.

The function should check if firstName is an actual contact’s firstName and the given property (prop) is a property of that contact.

If both are true, then return the “value” of that property.

If firstName does not correspond to any contacts then return “No such contact”

If prop does not correspond to any valid properties then return “No such property”

Now i did this –

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

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

But could not get, can someone tell me what I’m missing. Thank you.


#2

Please format your code with triple backticks (explanation here).

Here are your issues (in the comments):

for (i = 0; i < contacts.length; i++) { // You didn't declare `i`
// properly - it now exists in the global scope (this isn't affecting
// the running of your code, but can often cause problems)
  if (contacts[i].firstName===firstName) {
    if (contacts[i][prop]===prop) { // Assuming the value passed in
// for `prop` was "likes", this would then be testing whether the value
// corresponding to the key "likes" for the profile being tested was
// the string "likes".
      return contacts[i][prop];
    } else if (contacts[i].hasOwnProperty(prop)===false) {
      return "No such property";
    }
  } else if (contacts[i].firstName!==firstName) {
    return "No such contact";
  } // This runs within _each_ iteration of the for loop, which means
// the function will return "No such contact" in all cases except the 
// case where the profile you're looking up is at index 0.
}

#3

Ok, thanks. I will go through the challenge and the issues you identified.