Vérifier si une clé existe dans un objet JS


88

J'ai l'objet JavaScript suivant:

var obj = {
    "key1" : val,
    "key2" : val,
    "key3" : val
}

Existe-t-il un moyen de vérifier si une clé existe dans le tableau, similaire à celui-ci?

testArray = jQuery.inArray("key1", obj);

ne marche pas.

Dois-je parcourir l'objet comme ceci?

jQuery.each(obj, function(key,val)){}

4
js - object literal :) (not jQuery object)
funerr

True;), montre que je n'ai pas d'arrière-plan js - a commencé avec la bibliothèque jQuery dès le début, et je crois que j'ai besoin d'apprendre les bases ...
user2065483

obj.has("key1")fonctionnera si vous utilisez ES6.
Diablo


1
@Diablo Je pense que vous essayez de dire obj.hasOwnProperty("key1")au lieu de juste has?
Aminu Kano

Réponses:


173

Utilisez l' inopérateur :

testArray = 'key1' in obj;

Note de bas de page: Ce que vous avez là, ce n'est en fait pas un objet jQuery, mais juste un simple objet JavaScript.


4
Peut-on vérifier pas incomme ça?
SagarPPanchal

5
@SagarPanchal Que voulez-vous dire? Quelque chose comme testArray = !( 'key1' in obj);?
Sirko

49

Ce n'est pas un objet jQuery, c'est juste un objet.

Vous pouvez utiliser la méthode hasOwnProperty pour rechercher une clé:

if (obj.hasOwnProperty("key1")) {
  ...
}

vous ne devriez pas l'utiliser. on dit qu'elle est lente. la meilleure façon est d'utiliser 'key' dans l'objet
hannad rehman

@hannadrehman Pouvez-vous me donner une référence au doc ​​/ article où il est mentionné? :)
Nabin

1
@Fan_of_Martijn_Pieters Je suis un ensemble de règles ESlint strictes. il y est mentionné comme l'une des règles. eslint.org/docs/rules/no-prototype-builtins
hannad rehman

@hannadrehman N'utilisez pas l'objet clé dans l'objet, cela peut être tout simplement faux, c'est la meilleure façon.

Évalué car cela ne fonctionne pas lors de la détection de clés avec une valeur nulle. Par exemple, si la valeur de obj ["key1"] == null (donc key1 existe dans obj et sa valeur est null), cela renverra un faux résultat indiquant que key1 n'est pas dans obj.
user1258361

7
var obj = {
    "key1" : "k1",
    "key2" : "k2",
    "key3" : "k3"
};

if ("key1" in obj)
    console.log("has key1 in obj");

=================================================== ========================

Pour accéder à une clé enfant d'une autre clé

var obj = {
    "key1": "k1",
    "key2": "k2",
    "key3": "k3",
    "key4": {
        "keyF": "kf"
    }
};

if ("keyF" in obj.key4)
    console.log("has keyF in obj");

1
Ou si aucune clé1 ..if (!("key1" in obj)) { console.log("no key1 in obj"); }
Hastig Zusammenstellen

3

Les réponses ci-dessus sont bonnes. Mais c'est bien aussi et utile.

!obj['your_key']  // if 'your_key' not in obj the result --> true

C'est bon pour le style court de code spécial dans les instructions if:

if (!obj['your_key']){
    // if 'your_key' not exist in obj
    console.log('key not in obj');
} else {
    // if 'your_key' exist in obj
    console.log('key exist in obj');
}

Remarque: Si votre clé est égale à null ou "" votre "if" instruction sera erronée.

obj = {'a': '', 'b': null, 'd': 'value'}
!obj['a']    // result ---> true
!obj['b']    // result ---> true
!obj['c']    // result ---> true
!obj['d']    // result ---> false

Donc, la meilleure façon de vérifier si une clé existe dans un obj est:'a' in obj


1

Vous pouvez essayer ceci:

const data = {
  name : "Test",
  value: 12
}

if("name" in data){
  //Found
}
else {
  //Not found
}


0

le moyen le plus simple est

const obj = {
  a: 'value of a',
  b: 'value of b',
  c: 'value of c'
};

if(obj.a){
  console.log(obj.a);
}else{
  console.log('obj.a does not exist');
}


si aest une chaîne vide, zéro ou nulle, elle retournera toujours «obj.a n'existe pas», même si la clé aexiste.
Twisted Whisper
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.