web-dev-qa-db-ja.com

CoffeeScriptを使用してオブジェクトにキーが存在するかどうかを確認する最も簡単な方法

CoffeeScriptでは、オブジェクトにキーが存在するかどうかを確認する最も簡単な方法は何ですか?

109
ajsie
key of obj

これは、JavaScriptのkey in obj。 (CoffeeScriptはキーを参照するときにofを使用し、配列値を参照するときにinを使用します:val in arrは、valarrにあるかどうかをテストします。

オブジェクトのプロトタイプを無視したい場合、thejhの答えは正しいです。 nullまたはundefinedの値を持つキーを無視する場合、ジミーの答えは正しいです。

181
Trevor Burnham

「?」オペレータは存在をチェックします:

if obj?
    # object is not undefined or null

if obj.key?
    # obj.key is not undefined or null

# call function if it exists
obj.funcKey?()

# chain existence checks, returns undefined if failure at any level
grandChildVal = obj.key?.childKey?.grandChildKey

# chain existence checks with function, returns undefined if failure at any level
grandChildVal = obj.key?.childKey?().grandChildKey
34
limscoder
obj.hasOwnProperty(name)

(継承されたプロパティを無視するため)

20
thejh