Existe-t-il une sorte d'opérateur "pas dans" en JavaScript pour vérifier si une propriété n'existe pas dans un objet? Je n'ai rien trouvé à ce sujet autour de Google ou de Stack Overflow. Voici un petit extrait de code sur lequel je travaille où j'ai besoin de ce type de fonctionnalité:
var tutorTimes = {};
$(checked).each(function(idx){
id = $(this).attr('class');
if(id in tutorTimes){}
else{
//Rest of my logic will go here
}
});
Comme vous pouvez le constater, je mettrais tout dans la déclaration else
. Il ne me semble pas correct de définir une instruction if
– else
simplement pour utiliser la partie else
.
Il me semble erroné de configurer une déclaration if/else juste pour utiliser la portion else ...
Annulez simplement votre condition et vous obtiendrez la logique else
à l'intérieur de la if
:
if (!(id in tutorTimes)) { ... }
Comme déjà dit par Jordão, nie-le:
if (!(id in tutorTimes)) { ... }
Remarque: Le test ci-dessus si tutorTimes a une propriété avec le nom spécifié dans id, n'importe où dans la chaîne de prototypes. Par exemple, "valueOf" in tutorTimes
renvoie true car il est défini dans Object.prototype .
Si vous voulez vérifier si une propriété n'existe pas dans l'objet actuel, utilisez hasOwnProperty:
if (!tutorTimes.hasOwnProperty(id)) { ... }
Ou si vous avez une clé qui est hasOwnPropery , vous pouvez utiliser ceci:
if (!Object.prototype.hasOwnProperty.call(tutorTimes,id)) { ... }
Deux possibilités rapides:
if(!('foo' in myObj)) { ... }
ou
if(myObj['foo'] === undefined) { ... }
Personnellement je trouve
if (id in tutorTimes === false) { ... }
plus facile à lire que
if (!(id in tutorTimes)) { ... }
mais les deux vont travailler.