JavaScript オブジェクトにキーが存在するかどうかを確認しますか? 質問する

JavaScript オブジェクトにキーが存在するかどうかを確認しますか? 質問する

特定のキーが JavaScript オブジェクトまたは配列内に存在するかどうかを確認するにはどうすればよいですか?

キーが存在せず、アクセスしようとすると、false が返されますか? またはエラーがスローされますか?

ベストアンサー1

未定義かどうかをチェックすることは、キーが存在するかどうかをテストする正確な方法ではありません。キーは存在するが、値が実際には の場合はどうなるでしょうかundefined?

var obj = { key: undefined };
console.log(obj["key"] !== undefined); // false, but the key exists!

代わりに次のin演算子を使用する必要があります。

var obj = { key: undefined };
console.log("key" in obj); // true, regardless of the actual value

キーが存在しないかどうかを確認したい場合は、括弧を使用することを忘れないでください。

var obj = { not_key: undefined };
console.log(!("key" in obj)); // true if "key" doesn't exist in object
console.log(!"key" in obj);   // Do not do this! It is equivalent to "false in obj"

または、オブジェクト インスタンスのプロパティ (継承されたプロパティではない) を特にテストする場合は、次を使用しますhasOwnProperty

var obj = { key: undefined };
console.log(obj.hasOwnProperty("key")); // true

inhasOwnPropertyキーが であるメソッドのパフォーマンス比較についてはundefined、以下を参照してください。このベンチマーク:

ベンチマーク結果

おすすめ記事