Checkpoint: Profile Lookup
Instructions
We have an array of objects representing different people in our contacts lists.
A lookUp 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"
Remember to use Read-Search-Ask if you get stuck. Try to pair program. Write your own code.
Useful Links
- Challenge: Accessing Objects Properties with Bracket Notation
- Challenge: Iterate with JavaScript For Loops
Problem Explanation:
- Change the code below
// Only change code below this lineand up to// Only change code above this line - Take note that you are editing the inside of the
lookUpfunction- This function includes two parameters,
firstNameandprop
- This function includes two parameters,
- The function should check look through the
contactlist for the givenfirstNameparameter- If there is a match found, the function should then look for the given
propparameter - If both
firstNameand the associatedpropare found, you should return the value of theprop - If
firstNameis found and no associatedpropis found, you should return"No such property" - If
firstNameisn't found anywhere, you should return"No such contact"
- If there is a match found, the function should then look for the given
Hint: 1
- Use a for loop to cycle through the
contactlist
Hint: 2
- Use a nested
ifstatement to first check if thefirstNamematches, and then checks if thepropmatches
Hint: 3
- Leave your
return "No such contact"out of thefor loopas a final catch-all
Spoiler Alert!
Solution ahead!
Code Solution:
for (var x = 0; x < contacts.length; x++){
if (contacts[x].firstName === firstName) {
if (contacts[x][prop]) {
return contacts[x][prop];
} else {
return "No such property";
}
}
}
return "No such contact";
Code Explanation:
- The for loop runs, starting at the first object in the
contactslist - If the
firstNameparameter passed into the function matches the value of the"firstName"key in the first object, theifstatement passes - Then, if the
propparameter passed into the function is present in that object, the value of thepropis returned- If the second
ifstatement fails,"No such property"is returned
- If the second
- If the first
ifstatement fails, the for loop continues on to the next object in thecontactlist - If the
firstNameparameter isn't matched by the finalcontactobject, the for loop exits and"No such contact"is returned
Example Run
lookUp("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"
Credits:
If you found this page useful, you can give thanks by copying and pasting this on the main chat: thanks @leftynaut for your help with Checkpoint: Profile Lookup
NOTE: Please add your username only if you have added any relevant main contents to the wiki page. (Please don't remove any existing usernames.)