Why wrong? Explain to me, please

Why wrong? Explain to me, please
0

#1

Tell us what’s happening:
Can someone explain to me why wrong instead of leaving the last return out of for loop?
Help me, please!! I don’t understand. Thank you very much.
Your code so far

//Setup
var contacts = [
    {
        "firstName": "Akira",
        "lastName": "Laine",
        "number": "0543236543",
        "likes": ["Pizza", "Coding", "Brownie Points"]
    },
    {
        "firstName": "Harry",
        "lastName": "Potter",
        "number": "0994372684",
        "likes": ["Hogwarts", "Magic", "Hagrid"]
    },
    {
        "firstName": "Sherlock",
        "lastName": "Holmes",
        "number": "0487345643",
        "likes": ["Intriguing Cases", "Violin"]
    },
    {
        "firstName": "Kristian",
        "lastName": "Vos",
        "number": "unknown",
        "likes": ["Javascript", "Gaming", "Foxes"]
    }
];


function lookUpProfile(firstName, prop){
// Only change code below this line
    for ( var i = 0; i < contacts.length; i++){
        if (contacts[i].firstName === firstName) {
            if (contacts[i].hasOwnProperty(prop)) {
                return contacts[i][prop];
            }
            return "No such property";
        }
      return "No such contact";
    }
       


// Only change code above this line
}

// Change these values to test your function
lookUpProfile("Kristian", "lastName");

Your browser information:

Your Browser User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36.

Link to the challenge:


#2
    if (contacts[i].firstName === firstName) {
      if (contacts[i].hasOwnProperty(prop)) {
        return contacts[i][prop];
      }
      return "No such property";
    }
    return "No such contact";

The above above if code block is inside your for loop. If the first if statement condition of:

contacts[i].firstName === firstName

evaluates to false, your code skips to the return “No such contact”; and then returns the value “No such contact” and exits the function. It does not continue the for loop because the function was exited. In the first test case of:

lookUpProfile("Kristian", "lastName");

in the first iteration of the for loop, contacts[0].firstName is “Akira”, and firstName is “Kristian”. Since those are not equal, the first if statement condition evaluates to false, and your code returns “No such contact” and the function is exited.


#3

Well, unless the very first item matches firstName, you immediately return “No such contact”. You should go through the whole array first and only return “No such contact” if nothing is found.