Profile Lookup challenge#

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

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

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 OPR/57.0.3098.106 (Edition Campaign 34).

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

1 Like

You are not accessing the properties in the right way

Second thing: if you put an assignment inside a loop, the if statement outside the loop will work with the last assignment that happens inside the loop, and will not receive any other

Maybe you also want to rethink the logic of what you are doing there and see if you need to nest something inside something else or rearrange things differently

Once you have fixed how you access the properties of the objects you can see what your code is doing step by step using something like this:
http://pythontutor.com/javascript.html

And you may also want to search how to check if an object has a property because contacts[i] === prop will always be false as one is an object and the other a string

for(var i =0;i < contacts.length;i++){
   var names = (contacts[i].firstName)
}
for(var i =0;i < contacts.length;i++){
   var props =  (contacts[i])
}

You are looping through the same list twice when you could do them both in the same for-loop.
Then you declare a variable inside the loop calling it plural (names) and assign it to one index each time it loops. What are your logic behind these loops, what where your intentions?

When the loop is done the variables values will be the last indexes in the array only.
Also I recommend you not to use var at all, that variable-type is obsolete, use let or const depending of your needs.