203 votes

Comment faire pour trouver les clés d’un hachage ?

Je sais en double comme hachages des objets javascript, mais je n’ai pas pu trouver un bâti en fonction pour obtenir les clés

Je veux quelque chose comme

Il est simple d’écrire une fonction moi-même pour parcourir les éléments et ajouter les clés dans un tableau que je reviens, mais est-il un moyen plus propre standard pour cela ?

Je continue à sentir que ce doit être un simple construit en fonction que j’ai raté, mais je ne le trouve pas !

289voto

Ivan Nevostruev Points 14934

Il y a de la fonction moderne de javascript (ECMAScript 5) appelés Object.keys cette opération:

var obj = { "a" : 1, "b" : 2, "c" : 3};
alert(Object.keys(obj)); // will output ["a", "b", "c"]

La compatibilité de détails peuvent être trouvés ici.

Sur le site Mozilla il y a aussi un ciselée pour compatibilité ascendante:

if(!Object.keys) Object.keys = function(o){
   if (o !== Object(o))
      throw new TypeError('Object.keys called on non-object');
   var ret=[],p;
   for(p in o) if(Object.prototype.hasOwnProperty.call(o,p)) ret.push(p);
   return ret;
}

82voto

Annan Points 3491
<pre><code></code><hr><p><strong>Edit :</strong> Étant donné que cette réponse a été autour pendant un certain temps, je vais laisser ce qui précède intacte. Quiconque lit que cela devrait également lire la réponse de Ivan Nevostruev ci-dessous.</p><p>Il est aucun moyen de faire des fonctions prototype non enumérable qui mène à eux toujours tourner dans des-en boucles qui n’utilisent pas hasOwnProperty. Je pense toujours que cette réponse serait idéale s’étendant du prototype d’objet n’a pas été si malpropre.</p></pre>

44voto

Leticia Santos Points 251

vous pouvez utiliser Object.keys

33voto

timotti Points 291

Vous pouvez utiliser Underscore.js, qui est une bibliothèque d’utilitaires de Javascript.

14voto

danb Points 3688

C’est le meilleur que vous pouvez le faire, autant que je sache...

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