Tell us what’s happening:
The Last test won’t pass –
checkObj({pet: "kitten", bed: "sleigh"}, "gift")
should return the string
Not Found
I’m not sure what is wrong with this current setup?
**Your code so far**
function checkObj(obj, checkProp) {
// Only change code below this line
if (obj, checkProp == "gift") {
return "pony"
} else if (obj, checkProp == "pet") {
return "kitten"
} else if (obj, checkProp == "bed") {
return "sleigh"
} else if (obj, checkProp == "city") {
return "Seattle"
}else {
return "Not Found";
}
// Only change code above this line
}
**Your browser information:**
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0
Challenge: Testing Objects for Properties
Link to the challenge:
Hints:
1, obj.hasOwnProperty(prop) will return true if the property is present or false otherwise;
2, use bracket notation to access property value e.g obj[“property”]
insum:
if(obj.hasOwnProperty(prop)) {
return use bracket notation to access property value;
}else{
return "Not Found"
}
@Jonesx87 What do you think the above line is checking? Describe in your own words.
If obj and checkProp is equal to “gift”
So you mean you think it checks if both obj
and checkProp
are equal to “gift” or do you think it checks if obj
is an object and checkProp
is equal to “gift”?
I can tell you the statement checks neither of these scenarios. Where have you seen the use of a comma in a logical comparison statement?
Putting that comma in after obj
causes JavaScript to only return a value for the 2nd operand (checkProp == "gift"
) , so in the last test case, since checkProp
is “gift”, the if statement evaluates to true
causing “pony” to be returned.
Per the instructions, you need to validate two things:
-
obj
passed to the function is an object
AND
- If the property exists, return the value of that property of
obj
You are attempting to hard code the property values instead of using an algorithm to get the property’s value if it is found in the object.
Thank you that gave me a hint to solve it!
Thank you for pointing out the (checkProp == "gift)
. I hadn’t realized it was only checking the one part of it.