Basic javascript problem(object-if else)

It must be work but it didnt. I saw the solution but i want to solve using my way

Problem:TypeError: Cannot read property ‘firstName’ of undefined

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

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

Your browser information:

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

Challenge: Profile Lookup

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

what’s the value of contacts[i] when i is contacts.length?

and you may want to look at your code with this tool:
http://www.pythontutor.com/javascript.html

Once you fix that error there are a few other things you will need to fix, and that tool may help you visualise the code flow

yes i get it. i fix it to: i<contacts.length
but it must be asd=0 and return "No such contact " but it dont
it seems useful tool i will use it thank you

consider where you are setting asd to be 0.

when does that happen?

when you want asd to be 0?

I suggest you try your function with the various calls that the tests use with that tool, so you can see what happens with all of them, the passing ones and those that are not passing too

1 Like

Yes!, i did it

function lookUpProfile(name, prop){
// Only change code below this line
var i=0
var asd=0
    while (i<contacts.length){
        if(name==contacts[i]["firstName"]){
            asd++
            if (prop=="lastName"||prop=="number"||prop=="likes"){
                return contacts[i][prop]
                }else{
                    return "No such property"
                    }}
                    
        i++
            
        }
    if(asd==0){
        return "No such contact"
        }
}
// Only change code above this line

thank you so much

do you know that you don’t need the asd variable? can you figure out why if you don’t use it it can totally work the same?

2 Likes

I did but i watched the video :smiley:

function lookUpProfile(name, prop){
var i=0
    while (i<contacts.length){
        if(name==contacts[i]["firstName"]){
            if (prop=="lastName"||prop=="number"||prop=="likes"){
                return contacts[i][prop]
                }else{
                    return "No such property"
                    }
                }i++
                }
            return "No such contact"