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); //falsein演算子は、objectがhasOwnProperty等のメソッドを持っていることも含めて判定できるためです。
そのため、keyに限って判定したい場合はhasOwnPropertyメソッドを使うほうが安全ではあります。
