Je voudrais obtenir les clés d'un objet JavaScript en tant que tableau, soit jQuery soit JavaScript pur.
Existe-t-il un moyen moins détaillé que cela?
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' }; var keys = []; for (var key in foo) { keys.push(key); }
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' }; var keys = Object.keys(foo); // ['alpha', 'beta'] // (or maybe some other order, keys are unordered).
Utilisez Object.keys
.
Il s'agit d'une fonctionnalité ES5. Cela signifie qu'il fonctionne dans tous les navigateurs modernes mais ne fonctionnera pas dans les navigateurs existants .
L'ES5-shim a une implémentation de Object.keys
vous pouvez voler
Vous pouvez utiliser le $.map
.
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' }, keys = $.map(foo, function(v, i){ return i; });
Bien sûr, Object.keys()
est la meilleure façon d'obtenir les clés d'un objet. Si ce n'est pas disponible dans votre environnement, il peut être modifié de façon banale à l' aide d'un code tel que dans votre exemple (sauf que vous devriez tenir compte de votre boucle itérative sur toutes les propriétés de la chaîne prototype, contrairement à Object.keys()
comportement).
Cependant, votre exemple de code …
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' }; var keys = []; for (var key in foo) { keys.push(key); }
JsFiddle .
… pourrait être modifié. Vous pouvez effectuer l'affectation directement dans la partie variable .
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' }; var keys = [], i = 0; for (keys[i++] in foo) {}
JsFiddle .
Bien sûr, ce comportement est différent de ce Object.keys()
( jsFiddle ). Vous pouvez simplement utiliser la cale sur la documentation MDN .
Je ne connais pas moins de détails, mais j'ai été inspiré à contraindre le suivant à une seule ligne par la requête unique, je ne sais pas comment c'est Pythonic;
var keys = (function(o){var ks=[]; for(var k in o) ks.push(k); return ks})(foo);