JSでObjectが特定のkeyを持っているか判定する

JavaScript
const testobj = { name:"Taro", age:12 };
const testbool = "name" in testobj;
console.log(testbool);

if(testbool){
    console.log("含まれている");
} else {
    console.log("含まれていない");
}

最初にコードを示しておくと殆どの場合、上のコードで判定できます。

他にも、以下のコードで判定することもできます。

const testobj = { name:"Taro", age:12 };
const testbool = testobj.hasOwnProperty("name");
console.log(testbool);

if(testbool){
    console.log("含まれている");
} else {
    console.log("含まれていない");
}

hasOwnPropertyの小文字と大文字に注意してください。キャメルケースになっていない場合エラーになります。

今回の用途ではin演算子でもhasOwnPropertyメソッドでもどちらでも判定できますが、違いもちゃんとあります。

例えば以下のコードを実行すると異なる結果が得られます。

const testobj = { name:"Taro", age:12 };

const testbool1 = "hasOwnProperty" in testobj;
console.log(testbool1); //true

const testbool2 = testobj.hasOwnProperty("hasOwnProperty");
console.log(testbool2); //false

in演算子は、objecthasOwnProperty等のメソッドを持っていることも含めて判定できるためです。

そのため、keyに限って判定したい場合はhasOwnPropertyメソッドを使うほうが安全ではあります。