I got the first if to work after I put it inside the for loop (I get what’s going on here). When I wrote the second if (also inside the for ), it came back as correct, but it invalidated the first if. When I put it outside the for it worked, yet I have no idea why.
//function lookUpProfile(name, prop) {
// Only change code below this line
for(let i = 0; i < contacts.length; i++) {
if(contacts[i].firstName === name && contacts[i].hasOwnProperty(prop)) {
return contacts[i][prop]
}
}// for
if(name !== contacts) {
return 'No such contact'
}
No. The first if was read just fine. But the very first time your code reaches a return statement the entire function stops. So the first time you encounter a name that doesn’t match, the return statement declaring that zero matching names exist triggers.
Got it, thanks. Now that I’m redoing the exercises and not looking at the answers I can tell that there are things that I get or am on the cusp of understanding, and other stuff that I’m totally oblivious to. Thanks for reeling me back in on the previous tread.
So, this is one of those things where you just gotta keep the mind-spaghetti straight. While having a clear idea of what/how I wanted to accomplish on this one, I messed with some &&, and ‘tried’ to use some ternary (you totally can… see: spaghetti)… ultimately, making it as verbose/simple as possible is what helped me make sure all the logic was sound.
tl;dr when in doubt, rewrite all your ifs/elses to be as simple as possible and try to avoid stuff like && which can make it a bit confusing to keep straight when you are mentally doing a ‘step through’ routine…
Hi boondogle. I agree, though I think I got the hang of it ( &&s, ||s, that is). I wasn’t interpreting the ‘No such property’ if correctly and thought it was an issue with something else.
Indeed. I think the psychological side of things is a big factor. It always feels like I’m floating in space, like “what the heck am I doing?” And you want to start working, and cannot say when, so that’s stressful. You just gotta keep at it.