5.3 KiB
title
| title |
|---|
| Profile Lookup |
Profile Lookup
Remember to use Read-Search-Ask if you get stuck. Try to pair program
and write your own code 
Problem Explanation:
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.
- Change the code below
// Only change code below this lineand up to// Only change code above this line. - Ensure that you are editing the inside of the
lookUpProfile()function.- This function includes two parameters, firstName and prop.
- The function should look through the contacts list for the given firstName parameter.
- If there is a match found, the function should then look for the given prop parameter.
- If both firstName and the associated prop are found, you should return the value of the prop.
- If firstName is found and no associated prop is found, you should return
No such property.
- If firstName isn't found anywhere, you should return
No such contact.
Hint: 1
Use a for loop to cycle through the contacts list.
try to solve the problem now
Hint: 2
Use a nested if statement to first check if the firstName matches, and then checks if the prop matches.
try to solve the problem now
Hint: 3
Leave your return "No such contact" out of the for loop as a final catch-all.
try to solve the problem now
Spoiler Alert!
Solution ahead!
Basic Code Solution:
for (var x = 0; x < contacts.length; x++) {
if (contacts[x].firstName === name) {
if (contacts[x].hasOwnProperty(prop)) {
return contacts[x][prop];
} else {
return "No such property";
}
}
}
return "No such contact";
Code Explanation:
- The
forloop runs, starting at the first object in the contacts list. - If the firstName parameter passed into the function matches the value of the
"firstName"key in the first object, theifstatement passes. - Then, we use
.hasOwnProperty()method (checks if there's a given property and returns a boolean) with prop as an argument. If it's true, the value of prop is returned.- If the second
ifstatement fails,No such propertyis returned.
- If the second
- If the first
ifstatement fails, theforloop continues on to the next object in the contacts list. - If the firstName parameter isn't matched by the final contacts object, the
forloop exits andNo such contactis returned.
Example Run
lookUpProfile("Akira","likes");runs."Akira"is matched to the"firstName"key in the first object, so theifstatement returns true."likes"is found within the first object, so the secondifstatement returns true.- The value of
"likes"is returned -"Pizza", "Coding", "Brownie Points".
Alternative code solution:
for (var i = 0; i < contacts.length; i++){
if (contacts[i].firstName === name){
if (prop in contacts[i]){
return contacts[i][prop];
}
else return "No such property";
}
}
return "No such contact";
}
· Run code at repl.it.
Code explanation
This works as the last example but uses the in operator to look for prop instead of the hasOwnProperty() method.
