Est-il possible de parcourir les propriétés d'un objet JavaScript? Par exemple, j'ai un objet JavaScript défini comme suit:
myObject.options = {
property1: 'value 1',
property2: 'value 2'
};
Les propriétés seront ajoutées dynamiquement à cet objet. Y a-t-il un moyen pour moi de faire une boucle et de vérifier si une propriété existe? Si c'est le cas, comment?
javascript
lodash
user3111277
la source
la source
lodash
et non cela n'est justifié que par le fait de ne pas avoir besoin de lahasOwnProperty
vérification ennuyeuseUtilisez
_.forOwn()
.https://lodash.com/docs#forOwn
Notez que les
forOwn
vérificationshasOwnProperty
, comme vous devez généralement le faire lors de la boucle sur les propriétés d'un objet.forIn
ne fait pas cette vérification.la source
key
c'est le deuxième paramètre, mais cela a du sensPour votre désir déclaré de "vérifier si une propriété existe", vous pouvez directement utiliser Lo-Dash's
has
.la source
Vous pouvez certainement le faire avec vanilla JS comme l'a montré stecb, mais je pense que
each
c'est la meilleure réponse à la question fondamentale concernant la façon de le faire avec lodash.Comme JohnnyHK l'a mentionné, il existe également la
has
méthode qui serait utile pour le cas d'utilisation, mais à partir de ce qui est initialement indiqué, elleset
peut être plus utile. Disons que vous vouliez ajouter quelque chose à cet objet de manière dynamique comme vous l'avez mentionné:C'est comme ça que je ferais, basé sur la description originale.
la source
Prenons l'objet ci-dessous comme exemple
Récupérez d'abord toutes les clés de l'objet
puis bouclez-le
juste mettre tout ensemble
la source
Dans ES6, il est également possible d'itérer sur les valeurs d'un objet à l'aide de la
for..of
boucle. Cela ne fonctionne pas tout de suite pour les objets JavaScript, car vous devez définir une propriété @@ iterator sur l'objet. Cela fonctionne comme suit:for..of
boucle demande "l'objet à itérer sur" (appelons-le obj1 pour un objet itérateur. La boucle effectue une itération sur obj1 en appelant successivement la méthode next () sur l'objet itérateur fourni et en utilisant la valeur renvoyée comme valeur pour chaque itération de la boucle.Voici un exemple:
Maintenant, nous pouvons utiliser la
for..of
boucle:la source
Il serait utile de comprendre pourquoi vous devez faire cela avec lodash. Si vous voulez juste vérifier si une clé existe dans un objet, vous n'avez pas besoin de lodash.
Si vous cherchez à voir si une valeur existe, vous pouvez utiliser
_.invert
la source