487 votes

Obtenir un tableau des clés de l'objet

Je voudrais obtenir les clés d'un objet JavaScript en tant que 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);
}
 

781voto

Raynos Points 82706
 var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = Object.keys(foo); // ['alpha', 'beta'] 
// (or maybe some other order, keys are unordered).
 

Utilisez Object.keys .

Ceci est une fonctionnalité ES5. Cela signifie qu'il fonctionne dans tous les navigateurs modernes, mais ne fonctionnera pas dans les navigateurs existants.

Le ES5-shim a une implémentation de Object.keys vous pouvez voler

62voto

Rocket Hazmat Points 87407

Vous pouvez utiliser les $.map jQuery.

 var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' },
keys = $.map(foo, function(v, i){
  return i;
});
 

41voto

alex Points 186293

Bien sûr, Object.keys() est le meilleur moyen d'obtenir un Objet avec les touches. Si il n'est pas disponible dans votre environnement, il peut être trivialement calée à l'aide de code comme dans votre exemple (sauf que vous devez prendre en compte votre boucle va se répéter sur toutes les propriétés de la chaîne de prototype, à la différence de Object.keys()s'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 faire la cession à droite dans la variable de la partie.

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 que Object.keys() ne fait (jsFiddle). Vous pouvez simplement utiliser la cale sur le MDN documentation.

7voto

George Jempty Points 3660

Je ne sais pas à propos de moins verbeux, mais j'ai été inspiré à forcer le suivant sur une ligne par la demande d'une ligne, ne sais pas comment il est Pythonic;)

 var keys = (function(o){var ks=[]; for(var k in o) ks.push(k); return ks})(foo);
 

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