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ステートメントを設定するのは間違っているようです...
Else部分を使用するためだけにif/elseステートメントを設定するのは間違っているようです...
条件を否定するだけで、else
内でif
ロジックを取得できます。
if (!(id in tutorTimes)) { ... }
ジョルダンがすでに言ったように、否定するだけです。
if (!(id in tutorTimes)) { ... }
注:上記のテストでは、tutorTimesに、プロトタイプチェーンのid anywhereで指定された名前のプロパティがあるかどうかをテストします。たとえば、"valueOf" in tutorTimes
はtrueを返します。これは、Object.prototypeで定義されているためです。
現在のオブジェクトにプロパティが存在しないかどうかをテストする場合は、hasOwnPropertyを使用します。
if (!tutorTimes.hasOwnProperty(id)) { ... }
または、hasOwnProperyのキーがある場合は、これを使用できます。
if (!Object.prototype.hasOwnProperty.call(tutorTimes,id)) { ... }
2つの簡単な可能性:
if(!('foo' in myObj)) { ... }
または
if(myObj['foo'] === undefined) { ... }
個人的に私は見つけます
if (id in tutorTimes === false) { ... }
より読みやすい
if (!(id in tutorTimes)) { ... }
しかし、両方とも機能します。