渡された JSON データに特定のフィールドが存在するかどうかを確認するにはどうすればよいですか?
1.obj["key"] != 未定義
これは欠陥です。キーが定義されているのに、値が未定義であることが非常に多い場合、この文には問題があります。
2.!(オブジェクト内の「キー」)
3.obj.hasOwnProperty("key")
これら 2 つの方法の方が優れており、推奨されます。
元の回答:
実際、未定義かどうかをチェックすることは、キーが存在するかどうかをテストする正確な方法ではありません。キーは存在するが、値が実際には未定義である場合はどうなるでしょうか?
var obj = { キー: 未定義 };
obj["key"] != 未定義 // false、しかしキーは存在します!
代わりに in 演算子を使用する必要があります:
obj の「key」 // 実際の値に関係なく true
キーが存在しないかどうかを確認したい場合は、必ず括弧を使用してください:
!("key" in obj) // "key" がオブジェクトに存在しない場合は true
!"key" in obj // エラー! "false in obj"
または、オブジェクト インスタンスのプロパティ (継承されたプロパティではない) を特にテストしたい場合は、hasOwnProperty:
を使用します。obj.hasOwnProperty("key") // true