Il n'y a pas de moyen concis de manipuler directement les "clés" d'un objet Javascript. Ce n'est pas vraiment conçu pour cela. Avez-vous la liberté de mettre vos données dans quelque chose de mieux qu'un objet régulier (ou un tableau, comme le suggère votre code d'exemple) ?
Si c'est le cas, et si votre question pourrait être reformulée comme "Quel objet similaire à un dictionnaire devrais-je utiliser si je veux itérer sur les clés dans un ordre trié ?", alors vous pourriez développer un objet comme ceci :
var a = {
keys : new Array(),
hash : new Object(),
set : function(key, value) {
if (typeof(this.hash[key]) == "undefined") { this.keys.push(key); }
this.hash[key] = value;
},
get : function(key) {
return this.hash[key];
},
getSortedKeys : function() {
this.keys.sort();
return this.keys;
}
};
// utilisation d'exemple
a.set('b',1);
a.set('z',1);
a.set('a',1);
var sortedKeys = a.getSortedKeys();
for (var i in sortedKeys) { document.write(sortedKeys[i]); }
Si vous n'avez aucun contrôle sur le fait que les données se trouvent dans un objet régulier, cet utilitaire convertirait l'objet régulier en votre dictionnaire entièrement fonctionnel :
a.importObject = function(object) {
for (var i in object) { this.set(i, object); }
};
Ceci était une définition d'objet (au lieu d'une fonction de constructeur réutilisable) pour la simplicité ; modifiez-la à volonté.