WHY 🤯 😡

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

console.log(lookUpProfile("kristian", "likes"));

**Your browser information:**

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

Challenge: Profile Lookup

Link to the challenge:


Your logic is wrong :sweat:.

The idea is to find something, hence you have to iterate every element unless found. Right now you’re returning after the first miss, whereas you should check for something like this:

  1. The name parameter matches the firstName property. If so:
    1.a The property must exist, otherwise (and only then) return No such property.
  2. If it doesn’t, continue with the following element.
  3. Only if no element matches the firstName property (in other words, if no elements are left), return No such contact.

Hope it helps :slight_smile:

You could copy/paste the code on this site and see what you’re doing, step by step: JavaScript Tutor - Visualize JavaScript code execution to learn JavaScript online