256 votes

Javascript "pas dans" l'opérateur pour la vérification de propriétés de l'objet

Est-il une sorte de "pas en" opérateur en JavaScript pour vérifier si une propriété n'existe pas dans un objet? Je ne pouvais pas trouver quelque chose à ce sujet autour de Google. Voici un petit extrait de code, je suis en train de travailler sur l'endroit où j'ai besoin de ce genre 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 voir, je serais de tout mettre dans le else. Il semble mal à moi de mettre en place un if/else, juste pour pouvoir utiliser la partie else...

450voto

Jordão Points 29221

Il semble mal à moi de mettre en place un if/else, juste pour pouvoir utiliser la partie else...

Juste annuler votre état, et vous aurez l' else logique à l'intérieur de l' if:

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

40voto

some Points 18965

Comme déjà dit par Jordão, juste le nier:

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

Remarque: Le test ci-dessus si tutorTimes a une propriété dont le nom est spécifié dans id, n'importe où dans la chaîne de prototype. Par exemple "valueOf" in tutorTimes renvoie vrai car elle est définie dans l'Objet.le prototype.

Si vous voulez tester si une propriété n'existe pas dans l'objet en cours, utilisez hasOwnProperty:

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

Ou si vous pourriez avoir une clé qui est hasOwnPropery vous pouvez utiliser ceci:

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

15voto

reedlauber Points 231

Deux possibilités:

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

ou

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X