Challenge 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.

Relevant Links

๐Ÿ’ฌ 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!

687474703a2f2f7777772e796f75726472756d2e636f6d2f796f75726472756d2f696d616765732f323030372f31302f31302f7265645f7761726e696e675f7369676e5f322e676966.gif

Solution ahead!

๐Ÿ”ฐ Basic Code Solution:

for (var x = 0; x < contacts.length; x++){
    if (contacts[x].firstName === firstName) {
        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, the if 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 first if statement fails, the for 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 and No such contact is returned.

Example Run

  • lookUpProfile("Akira","likes"); runs.
  • "Akira" is matched to the "firstName" key in the first object, so the if statement returns true.
  • "likes" is found within the first object, so the second if statement returns true.
  • The value of "likes" is returned - "Pizza", "Coding", "Brownie Points".

๐Ÿ† Credits:

If you found this page useful, you may say thanks to the contributors by copying and pasting the following line in the main chat:

Thanks @leftynaut for your help with Checkpoint: Profile Lookup

๐Ÿ“‹ NOTES FOR CONTRIBUTIONS:

  • โš  DO NOT add solutions that are similar to any existing solutions. If you think it is similar but better, then try to merge (or replace) the existing similar solution.
  • Add an explanation of your solution.
  • Categorize the solution in one of the following categories โ€” Basic, Intermediate and Advanced. ๐Ÿšฅ
  • Please add your username only if you have added any relevant main contents. (โš  DO NOT remove any existing usernames)

See ๐Ÿ‘‰ Wiki Challenge Solution Template for reference.