Je voudrais obtenir les clés d'un objet JavaScript sous forme de tableau, soit en jQuery soit en JavaScript pur.
Y a-t-il une manière moins verbeuse que cela?
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [];
for (var key in foo) {
keys.push(key);
}
javascript
ecmascript-5
Richard
la source
la source
if(foo.hasOwnProperty(key))
, c'est ce que je ferais. Ou, utilisez$.map
.for var in x
bouclesRéponses:
Utilisation
Object.keys
:Il s'agit d'une fonctionnalité ES5. Cela signifie que cela fonctionne dans tous les navigateurs modernes, mais ne fonctionnera pas dans les navigateurs hérités .
La cale ES5 a une implémentation de
Object.keys
vous pouvez volerla source
Vous pouvez utiliser jQuery
$.map
.la source
each
, si vous faites quelque chose avec eux.$.each(foo, function(index, value){/* do something with index */});
Bien sûr,
Object.keys()
c'est le meilleur moyen d'obtenir les clés d'un objet. S'il n'est pas disponible dans votre environnement, il peut être simplifié à l' aide de code comme dans votre exemple (sauf que vous devrez prendre en compte que votre boucle itérera sur toutes les propriétés de la chaîne de prototype, contrairementObject.keys()
au comportement de).Cependant, votre exemple de code ...
jsFiddle .
... pourrait être modifié. Vous pouvez effectuer l'affectation directement dans la partie variable .
jsFiddle .
Bien sûr, ce comportement est différent de ce qui
Object.keys()
se passe réellement ( jsFiddle ). Vous pouvez simplement utiliser le shim sur la documentation MDN .la source
var keys = [], i = 0; for (keys[i++] in foo) {}
+1hasOwnProperty()
contrôle, sûrement?Je ne sais pas moins verbeux mais j'ai été inspiré pour contraindre ce qui suit sur une ligne par la demande à une ligne, je ne sais pas comment c'est Pythonic cependant;)
la source
var enumerableKeysOnThePrototypeChain
;)for (keys[i++] in foo) {}
), car vous êtes toujours en train de jouerArray.push()
(sans parler de la déclaration d'une fonction entière). Une implémentation pythonique devrait s'appuyer autant sur la compréhension implicite que possible, et à défaut, en utilisant une expression lambda.Dans le cas où vous cherchez ici quelque chose pour répertorier les clés d'un objet imbriqué de profondeur n en tant que tableau plat:
la source
Sommaire
Pour obtenir toutes les clés d'un objet que vous pouvez utiliser
Object.keys()
.Object.keys()
prend un objet comme argument et retourne un tableau de toutes les clés.Exemple:
Dans l'exemple ci-dessus, nous stockons un tableau de clés dans la clé const. Nous pouvons alors facilement accéder à la quantité de propriétés sur l'objet en vérifiant la longueur du tableau de clés.
Obtenir les valeurs avec:
Object.values()
La fonction complémentaire de
Object.keys()
isObject.values()
. Cette fonction prend un objet comme argument et renvoie un tableau de valeurs. Par exemple:la source
Si vous décidez d'utiliser Underscore.js, vous feriez mieux de le faire
la source