web-dev-qa-db-ja.com

オブジェクトプロパティをチェックするためのJavaScriptの「not in」演算子

JavaScriptに、オブジェクトにプロパティが存在しないかどうかを確認するための「not in」演算子がありますか? GoogleやSOの周辺でこれについては何も見つかりませんでした。この種の機能が必要な場所で作業しているコードの小さな断片を次に示します。

var tutorTimes = {};
$(checked).each(function(idx) {
    id = $(this).attr('class');
    if(id in tutorTimes) {

    }
    else {
        //Rest of my logic will go here
    }
});

ご覧のとおり、私はすべてをelseステートメントに入れています。 else部分を使用するためだけにif/elseステートメントを設定するのは間違っているようです...

134
Aaron

Else部分を使用するためだけにif/elseステートメントを設定するのは間違っているようです...

条件を否定するだけで、else内でifロジックを取得できます。

if (!(id in tutorTimes)) { ... }
269
Jordão

ジョルダンがすでに言ったように、否定するだけです。

if (!(id in tutorTimes)) { ... }

注:上記のテストでは、tutorTimesに、プロトタイプチェーンのid anywhereで指定された名前のプロパティがあるかどうかをテストします。たとえば、"valueOf" in tutorTimestrueを返します。これは、Object.prototypeで定義されているためです。

現在のオブジェクトにプロパティが存在しないかどうかをテストする場合は、hasOwnPropertyを使用します。

if (!tutorTimes.hasOwnProperty(id)) { ... }

または、hasOwnProperyのキーがある場合は、これを使用できます。

if (!Object.prototype.hasOwnProperty.call(tutorTimes,id)) { ... }
27
some

2つの簡単な可能性:

if(!('foo' in myObj)) { ... }

または

if(myObj['foo'] === undefined) { ... }
13
reedlauber

個人的に私は見つけます

if (id in tutorTimes === false) { ... }

より読みやすい

if (!(id in tutorTimes)) { ... }

しかし、両方とも機能します。

0
Forage