Profile Lookup - condition doesn't work

Profile Lookup - condition doesn't work
0

#1

Tell us what’s happening:

I’m trying to solve the Basic JavaScript: Profile Lookup, and i’m quiet annoyed because I can not.

I do not want the answer but just have an answer to the question below, i have the feeling i’m missing something.

How come my function is not working well ? While contacts[i].firstName is equal to name it always return “ok” as if it was not equal…

Could you please help me ?

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

// Change these values to test your function
lookUpProfile("Akira", "likes");

Your browser information:

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

Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/profile-lookup


#2

First of all you have a syntax error.

You need to close your forloop before your else statement.

I don’t understand what you mean by that.


#3

Thank you but it still doesn’t work

Even when contact[i].firstName == name it returns ok…


#4

Can you share your new code?


#5

I found out why :slight_smile:

function lookUpProfile(name,prop){
  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";
     }
 else if(contacts[i].firstName != name){
   return "No such contact";
 }
 }
};
};

if I call the function and name = Kristian first it compare Akira with christian and as it not equal he goes to No such contact and the loop is over.

When I delete the else statement, he goes through all the loop and until he found that it is equal and then return the information needed.

Now I should figure out how to state no such contact…


#6
function lookUpProfile(name,prop){
   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"
};

It works :slight_smile:


#7

You might want to indent your code blocks, to make it easier to read your code. You are currently missing a } before the else if statement. Also, you have an extra } at the end of your function. This is why properly indenting your code as you write it helps you find these kinds of syntax errors.

EDIT: You seemed to have changed your code to no longer have the missing or extra }.


#8

Also, you do not need the semi-colons after the for loop, after the if statement or at the end of the function.


#9

Thanks you for your help :slight_smile:

I’m quite happy to have find the solution by myself, but thank for you syntax correction.

And please forgive my english i’m french