Https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/testing-objects-for-properties

Tell us what’s happening:

why
console.log(checkObj(“house”))
does not give “Not Found” ?

Your code so far


// Setup
var myObj = {
  gift: "pony",
  pet: "kitten",
  bed: "sleigh"
};

function checkObj(checkProp) {
  // Your Code Here
  switch (myObj.hasOwnProperty(checkProp)) {
    case myObj.hasOwnProperty(checkProp):
    return myObj[checkProp];
    break;

    default:
    return "Not Found";
    break;
  }
}

// Test your code by modifying these values
checkObj("gift");
console.log(checkObj("house"))

Your browser information:

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

Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/testing-objects-for-properties

You are not understanding how the switch statement works. Instead of a variable, you have put an expression: myObj.hasOwnProperty(checkProp). If this expression evaluates to true, then since your first case is the same, it will evaulate to true and return. If this expression evaluates to false, the first case is the same, so it will evaluate to false which matches the switch expression and return. Your default case will never execute.

I suggest going for a simple if/else statement here.

Note: You could still use the switch, but the switch value would simply need to be true. That way, if the first case evaluates to true, then it will return the property value. Otherwise, the default case will return “Not found”.

1 Like

Thanks for you.:grinning:
already made with if/else, i just needed to try it with switch statment