5.3 KiB
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 line
and 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
for
loop 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, theif
statement 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
if
statement fails,No such property
is returned.
- If the second
- If the first
if
statement fails, thefor
loop continues on to the next object in the contacts list. - If the firstName parameter isn't matched by the final contacts object, the
for
loop exits andNo such contact
is returned.
Example Run
lookUpProfile("Akira","likes");
runs."Akira"
is matched to the"firstName"
key in the first object, so theif
statement returns true."likes"
is found within the first object, so the secondif
statement 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.