I have spent hours trying to understand this - I know it has something to do with if…else statement logic order, but each time I have tried to follow I got lost. Someone please explain this to me and if possible give a pointer of how to handle if…else logic order(a hack/ quick method to remember e.g: “always start with the larger sample space …”)
Here it is:
The Task is as follows:
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”
CODE
This code is wrong
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){
for(var i=0;i < contacts.length;i++){
if (contacts[i].hasOwnProperty(prop))
{
if(contacts[i].firstName === firstName){
return contacts[i][prop];
}
else {
return "No such contact";
}
}
// Only change code above this line
}
return "No such property";
}
// Change these values to test your function
lookUpProfile("Harry", "likes");
THIS code is correct:
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){
for(var i=0;i < contacts.length;i++){
if (contacts[i].firstName === firstName)
{
if(contacts[i].hasOwnProperty(prop)){
return contacts[i][prop];
}
else {
return "No such property";
}
}
// Only change code above this line
}
return "No such contact";
}
// Change these values to test your function
lookUpProfile("Harry", "likes");
I will really appreciate if someone can help me explain the difference. Thank you in advance!