Files
Randell Dawson 1494a50123 fix(guide): restructure curriculum guide articles (#36501)
* 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
2019-07-24 13:29:27 +05:30

3.6 KiB

title
title
Profile Lookup

Profile Lookup


Problem Explanation

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

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