Why everyname other than akira is saying no such contact

Tell us what’s happening:

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(name, prop){
// Only change code below this line
for ( var i =0 ; i <contacts.length ; i++) {
    if (contacts[i].firstName === name) {
        if ( contacts[i].hasOwnProperty(prop)) {
          return contacts[i][prop];
        } else  return "No such property";
    }
    return "No such contact";
}

// Only change code above this line
}

console.log(lookUpProfile("Kristian", "lastName"));

Your browser information:

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

Challenge: Profile Lookup

Link to the challenge:

because you added return "No such contact" inside the loop, so if the if statement is false, then that return statement is executed, as it’s inside the loop the loop stops at first iteration

2 Likes

but that works for firstName akira but not for kristian

your code does that, check only for i being 0, because that is the content of your loop, and when a return statement is executed, the function stops

think, can you say for sure that the contact you search is not there after checking the first element in the array… or after checking all of them?

oh so just wrong placement was causing that problem
got it! thanks :slight_smile: