* fix: restructure certifications guide articles * fix: added 3 dashes line before prob expl * fix: added 3 dashes line before hints * fix: added 3 dashes line before solutions
3.6 KiB
3.6 KiB
title
| title |
|---|
| Profile Lookup |
Profile Lookup
Problem Explanation
- 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.
Hints
Hint 1
Use a for loop to cycle through the contacts list.
Hint 2
Use a nested if statement to first check if the firstName matches, and then checks if the prop matches.
Hint 3
Leave your return "No such contact" out of the for loop as a final catch-all.
Solutions
Solution 1 (Click to Show/Hide)
function lookUpProfile(name, prop) {
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".
Solution 2 (Click to Show/Hide)
function lookUpProfile(name, prop) {
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";
}
Code Explanation
This works as the last example but uses the in operator to look for prop instead of the hasOwnProperty() method.