特定のキーが 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
in
とhasOwnProperty
キーが であるメソッドのパフォーマンス比較についてはundefined
、以下を参照してください。このベンチマーク: