Profile Lookup Javascript doesnt work

Tell us what’s happening:
Any name after Akira will return no such contact. What did i do wrong?

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 (let i=0;i<contacts.length;i++) {
  if (contacts[i]['firstName'] === name) {
    if (contacts[i][prop]!== undefined) {
      return contacts[i][prop];
    }
    else {
      return "No such property";
    }
  }
  else {
    return "No such contact";
  }
}
// Only change code above this line
}

// Change these values to test your function
console.log(lookUpProfile("Kristian", "likes"));

Your browser information:

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0.

The problem lies here:

function lookUpProfile(name, prop){
for (let i=0;i<contacts.length;i++) {
  if (contacts[i]['firstName'] === name) {
     ...
  } else {
    return "No such contact";
  }

This is causing your loop to stop immediately and return “No such contact”. You should only return that at the end of the loop, after you’ve iterated through all the contacts, like so:

for (let i=0;i<contacts.length;i++) {
... body of loop here ...
}
return "No such contact";

Thanks so much! Totally forgot that return stops the function

No prob – I’ve been programming for over 20 years, and early returns out of loops still bite me sometimes :slight_smile: