J'ai un tableau associatif en Javascript:
var dictionary = {
"cats": [1,2,3,4,5],
"dogs": [6,7,8,9,10]
};
Comment obtenir les clés de ce dictionnaire? c'est à dire que je veux
var keys = ["cats", "dogs"];
Modifier 7 ans plus tard: juste pour obtenir la terminologie correcte - il n'y a pas de «tableau associatif» en Javascript - c'est techniquement juste un object
et ce sont les clés d'objet que nous voulons.
javascript
arrays
Simon_Weaver
la source
la source
Réponses:
Vous pouvez utiliser:
Object.keys(obj)
Exemple:
Voir la référence ci-dessous pour la prise en charge du navigateur. Il est pris en charge dans Firefox 4.20, Chrome 5, IE9. Le lien ci-dessous contient un extrait de code que vous pouvez ajouter s'il
Object.keys()
n'est pas pris en charge dans votre navigateur.https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys
la source
Essaye ça:
hasOwnProperty
est nécessaire car il est possible d'insérer des clés dans l'objet prototype dedictionary
. Mais vous ne voulez généralement pas que ces clés soient incluses dans votre liste.Par exemple, si vous procédez ainsi:
puis faites une
for...in
boucledictionary
, vous obtiendreza
etb
, mais vous obtiendrez égalementc
.la source
keys.push(key);
. Vous êtes juste en train de tirer (et donc de le déclarer) de l'espace de noms global. :)C'est la déclaration for..in .
la source
dictionary.hasOwnProperty(key)
sinon vous risquez de vous retrouver avec des méthodes de la chaîne prototype.Juste une note rapide, méfiez-vous d'utiliser for..in si vous utilisez une bibliothèque (jQuery, prototype, etc.), car la plupart d'entre eux ajoutent des méthodes aux objets créés (y compris les dictionnaires).
Cela signifie que lorsque vous les parcourez, les noms des méthodes apparaissent sous forme de clés. Si vous utilisez une bibliothèque, consultez la documentation et recherchez une section énumérable, où vous trouverez les bonnes méthodes pour l'itération de vos objets.
la source
Manière JQUERY simple.
C'est ce que j'utilise
DictionaryObj étant l'objet dictionnaire javascript que vous souhaitez parcourir. valeur, la clé étant bien sûr leur nom dans le dictionnaire.
la source
J'utilise actuellement la réponse de Rob de la Cruz
et dans un fichier chargé au début, j'ai quelques lignes de code empruntées ailleurs sur Internet qui couvrent le cas des anciennes versions d'interpréteurs de scripts qui n'ont pas de Object.keys intégré.
Je pense que c'est le meilleur des deux mondes pour les grands projets: code moderne simple et support rétrocompatible pour les anciennes versions de navigateurs, etc.
En effet, il met la solution de JW dans la fonction lorsque les Object.keys (obj) de Rob de la Cruz ne sont pas nativement disponibles.
la source