The console.logs return whats asked but when run the tests fail every one

When i console.log results it retrieves me exactly whats asked but with a minor change i saw.
In arrays returned instead of using " " im getting ’ ’ i dont know if that may be the problem.


// 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
contacts.forEach(contact => {
    if(contact.firstName = name && contact.hasOwnProperty(prop)){
        console.log(contact[prop]);
            return contact[prop];
    }
})
return "No such contact"
// Only change code above this line
}

// lookUpProfile("Akira", "likes");
//lookUpProfile("Kristian", "lastName")
lookUpProfile("Sherlock", "likes")
**Your browser information:**

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

Challenge: Profile Lookup

Link to the challenge:

When I test it, I see a lot of extra things being logged. Let’s break it down a bit.

contact.firstName = name This bit in your if condition is a syntax error (a common one, I do it myself quite often). You’re using the assignment operator = instead of an equality operator == or ===.

Next, you’re using forEach, which is a good way to iterate through an array. However, this comes with some pitfalls. forEach takes a function callback as its first parameter. That function has its own return statement, which you are using to return contact[prop];. The problem here is that value doesn’t get passed up to the outer function, and that return statement doesn’t terminate your outer function.

So instead, your function hits it’s own return statement and gives back "No such contact".

If we remove the console.log(contact[prop]) and console.log your function call:

2 Likes

Okeeeey, didn’t realize about that, very silly mistake on my part the ’ = ’ you are absolutely right, ill try to keep on using the same ‘tools’ with classes without trying new stuffs like forEach because what at first glance may be the same is clearly not. But now i know is not working the same under the hood . Thanks nhcarrigan!

1 Like

Hey the best way to learn this stuff is by trying it. :grin:

1 Like